当前位置:网站首页>【LeetCode】287. 寻找重复数
【LeetCode】287. 寻找重复数
2022-08-09 04:55:00 【酥酥~】
题目
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。
你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。
示例 1:
输入:nums = [1,3,4,2,2]
输出:2
示例 2:
输入:nums = [3,1,3,4,2]
输出:3
提示:
1 <= n <= 105
nums.length == n + 1
1 <= nums[i] <= n
nums 中 只有一个整数 出现 两次或多次 ,其余整数均只出现 一次
进阶:
如何证明 nums 中至少存在一个重复的数字?
你可以设计一个线性级时间复杂度 O(n) 的解决方案吗?
题解
排序+暴力
class Solution {
public:
int findDuplicate(vector<int>& nums) {
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i++)
{
if(nums[i] == nums[i+1])
return nums[i];
}
return 0;
}
};
二分法
因为序列有n+1个值,每个值都在1~n之间
且只有一个重复值
那么只需要寻找目标值target
这就可以使用二分法,left=1,right=n
当mid小于target时,数列中小于等于mid的值不会有重复的,所以cnt小于或者等于mid
当mid大于等于target时,数列中小于等于mid的值会有重复的,所以cnt必定大于mid
class Solution {
public:
int findDuplicate(vector<int>& nums) {
int len = nums.size();
int left = 1;
int right = len;
int res = 0;
while(left<=right)
{
int mid = left + ((right - left)>>1);
int cnt = 0;
for(int i:nums)
{
if(i<=mid)
cnt++;
}
//cout<<left<<"=="<<mid<<"=="<<right<<"==>"<<cnt<<endl;
if(cnt <= mid)
left = mid+1;
else
{
right = mid-1;
res = mid;
}
}
return res;
}
};
边栏推荐
- 【暑期每日一题】洛谷 P5724 【深基4.习5】求极差 / 最大跨度值
- 什么是通用微处理器、单片机、DSP芯片、嵌入式系统?
- Faced with risk control, what should Amazon do when evaluating self-supporting accounts?
- 【luogu U142356】勇者的后缀(SA)(主席树)(二分)
- 【HMS Core】【FAQ】【AR Engine】AR Engine常见问题合集
- Hhhhgffsb
- Zuul---路由功能
- 【Harmony OS】【FAQ】鸿蒙问题合集1
- LN论文、五种归一化原理和实现
- Harmony OS ets ArkUI 】 【 】 development create a view and building layout
猜你喜欢

【Harmony OS】【ARK UI】自定义弹窗
![[Harmony OS] [ArkUI] ets development graphics and animation drawing](/img/36/f4c91f794b1321f11a24505d1617fb.png)
[Harmony OS] [ArkUI] ets development graphics and animation drawing

LeetCode-636. 函数的独占时间

mysql content does not exist error

还不了解什么是商业智能(BI)?看完这篇文章就懂了

What is it like to work at Kuaishou?

杰理之一拖二 另一台手机超距 通话会无声【篇】

Docker部署MySQL

Harmony OS ets ArkUI 】 【 】 development create a view and building layout

mysql内容不存在的报错
随机推荐
【暑期每日一题】洛谷 P8086 『JROI-5』Music
【MLT】MLT多媒体框架生产消费架构解析(二)
Oracle01-安装与卸载
[Daily Training--Tencent Featured 50] 7. Integer Reversal
pytorch implementation of Poly1CrossEntropyLoss
2022-08-08 mysql慢SQL-Q18-10GB数据量-mysql/innodb测试
dsafasfdasfasf
基于ABP和Magicodes实现Excel导出操作
【暑期每日一题】洛谷 P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
TASSEL software imports plink format file error
Quantitative Genetics Heritability Calculation 2: Half Siblings and Full Siblings
ABP中的数据过滤器
The influence law of genes for disease - read the paper
【暑期每日一题】洛谷 P1176 路径计数2
[MLT] Analysis of MLT Multimedia Framework Production and Consumption Architecture (2)
力扣349-两个数组的交集——HashSet
匿名共享内存 ashmem
【基于富瀚6630使用/dev/fb0显示设备和TDE模块渲染bmp图像】
【Harmony OS】【ArkUI】ets开发 基础页面布局与数据连接
[Harmony OS] [ARK UI] ETS context basic operations