自学内容网 自学内容网

力扣 2529.正整数和负整数的最大计数

文章目录

题目介绍

在这里插入图片描述在这里插入图片描述

解法

采用红蓝染色体法,具体介绍参考 红蓝染色体法
通过红蓝染色体法可以找到第一个大于大于target的位置,使所以本题可以找第一个大于0的位置,即负整数的个数;数组长度 - 第一个大于1的位置即正整数的个数。

class Solution {
    public int maximumCount(int[] nums) {
        int left = lowerBound(nums,0);
        int right = lowerBound(nums,1) ;
        return Math.max(left,nums.length - right);
    }
    public int lowerBound(int[] nums, int target) {
        int left = 0, right = nums.length - 1; 
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1; 
            }
        }
        return left;
    }
}

原文地址:https://blog.csdn.net/qq_51352130/article/details/142353663

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!