287.寻找重复数


287. 寻找重复数

难度中等597

给定一个包含 n + 1 个整数的数组 nums*,其数字都在 1 到 *n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。

示例 1:

输入: [1,3,4,2,2]
输出: 2

示例 2:

输入: [3,1,3,4,2]
输出: 3

说明:

  1. 不能更改原数组(假设数组是只读的)。

  2. 只能使用额外的 O(1) 的空间。

  3. 时间复杂度小于 O(n2) 。

  4. 数组中只有一个重复的数字,但它可能不止重复出现一次。

    Imgur

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

文章作者: anlen123
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 anlen123 !
 上一篇
974.和可被整除的子数组 974.和可被整除的子数组
974. 和可被 K 整除的子数组难度中等80 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满足其
2020-05-27 anlen123
下一篇 
python里调用js代码 python里调用js代码
安装包pip install execjs 直接调用import execjs js = """ add = function(a,b){ return a+b; } """ ctx = execjs.compile(js)
2020-05-23 anlen123
  目录