文章目录
- 题目介绍
- 解法
题目介绍
解法
采用红蓝染色体法,具体介绍参考 红蓝染色体法
通过红蓝染色体法可以找到第一个大于大于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;}
}