代码拉取完成,页面将自动刷新
class Solution
{
public:
int findDuplicate(vector<int>& nums)
{
int min = 0, max = nums.size() - 1;
while(min <= max)
{
// 找到中间那个数
int mid = min + (max - min) / 2;
int cnt = 0;
// 计算总数组中有多少个数小于等于中间数
for(int i = 0; i < nums.size(); i++)
{
if(nums[i] <= mid)
{
cnt++;
}
}
// 如果小于等于中间数的数量大于中间数,说明前半部分必有重复
if(cnt > mid)
{
max = mid - 1;
// 否则后半部分必有重复
}
else
{
min = mid + 1;
}
}
return min;
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。