2529.正整数和负整数的最大计数(leetcode)

https://leetcode.cn/problems/maximum-count-of-positive-integer-and-negative-integer

class Solution {
    public int maximumCount(int[] nums) {
        // 思路:由于数组非递减,考虑logn实现
        // 因此可以有二段性可以二分
        // 即寻找正数和负数的分界点target
        // 答案就是max(target,nums.length-targ1et)
        int target=lowbound(nums,1); // 寻找第一个正数,即分界点
        int target2=lowbound(nums,0)-1; // 寻找最后一个负数,即分界点
        System.out.println(target2+" "+target);
        return Math.max(target2+1,nums.length-target);


    }

    int lowbound(int[] nums,int x)
    {
        int l=0,r=nums.length-1;
        while(l<=r)
        {
            int mid=l+(r-l>>1);
            if(nums[mid]<x)l=mid+1;
            else r=mid-1;
        }
        return l;
    }
}

 

posted @ 2024-11-06 17:55  风乐  阅读(1)  评论(0编辑  收藏  举报