二分

发布时间 2023-05-10 11:39:40作者: 你在学什么

寻找重复数

class Solution {
    public int findDuplicate(int[] nums) {
        int len = nums.length;
        int l = 1, r = len - 1;
        while (l < r) {
            int mid = (l + r) / 2;
            int count = 0;
            for (int num : nums) {
                if (num <= mid) {
                    count++;
                }
            }
            if (count > mid) {
                r = mid;
            }else {
                l = mid + 1;
            }
        }
        return l;
    }
}