力扣 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)!