本文主要是介绍力扣hot100 寻找重复数 二分 抽屉原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem: 287. 寻找重复数
文章目录
- 思路
- 复杂度
- 🎈 Code
思路
👨🏫 参考题解
复杂度
时间复杂度: O ( N log N ) O(N \log{N}) O(NlogN)
空间复杂度: O ( 1 ) O(1) O(1)
🎈 Code
class Solution {public int findDuplicate(int[] nums){int n = nums.length;int l = 0;int r = n - 1;
// 二分答案法while (l < r){
// 假设答案是 xint x = l + r >> 1;int cnt = 0;// cnt 统计 <= x 的值出现的次数for (int num : nums)if (num <= x)cnt++;if (cnt > x)//说明当前的左区间 [l,m) 里有多 r = x;else //说明当前的右区间 (l,r) 里有多l = x + 1;}return l;}
}
这篇关于力扣hot100 寻找重复数 二分 抽屉原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!