力扣hot100 寻找重复数 二分 抽屉原理

发布时间:2024年01月16日

Problem: 287. 寻找重复数
在这里插入图片描述

思路

👨?🏫 参考题解
在这里插入图片描述

复杂度

时间复杂度: 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)
		{
//			假设答案是 x
			int 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;
	}
}
文章来源:https://blog.csdn.net/lt6666678/article/details/135622562
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。