当前位置:网站首页>剑指Offer03. 数组中重复的数字【简单】
剑指Offer03. 数组中重复的数字【简单】
2022-07-03 11:50:00 【伍六琪】
剑指 Offer 03. 数组中重复的数字
题目描述:
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
> 输入: [2, 3, 1, 0, 2, 5, 3]
> 输出:2 或 3
限制:
2 <= n <= 100000
JAVA代码
普通方法
两层遍历挨个寻找第一个重复的数字。
class Solution {
public int findRepeatNumber(int[] nums) {
for(int i = 0;i<nums.length-1;i++){
for(int j = i+1;j<nums.length;j++){
if(nums[i]==nums[j]){
return nums[i];
}
}
}
return -1;
}
}

Map方法
使用map存储nums数据,以nums的值作为map的key,当遇到相同的key值时返回该数值。
class Solution {
public int findRepeatNumber(int[] nums) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i = 0;i<nums.length;i++){
if(map.containsKey(nums[i])){
return nums[i];
}
map.put(nums[i],i);
}
return -1;
}
}

官方方法
使用Set,仅存储一个值,比Map方法存储两个值更加简便
拓展:Set无序的不可重复的。add()方法返回false,则说明存在重复的值。
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
int result = -1;
for(int num:nums){
if(!set.add(num)){
result = num;
break;
}
}
return result;
}
}

“这里没有涉及到其他复杂的关于位置的操作,所以仅仅存储值就足够了。”
边栏推荐
- Colleagues wrote a responsibility chain model, with countless bugs
- 网上炒股开户安不安全?谁给回答一下
- Simple factory and factory method mode
- Flutter Widget : KeyedSubtree
- Socket TCP for network communication (I)
- During FTP login, the error "530 login incorrect.login failed" is reported
- 网络通讯之Socket-Tcp(一)
- Display time with message interval of more than 1 minute in wechat applet discussion area
- (construction notes) learning experience of MIT reading
- Adult adult adult
猜你喜欢
随机推荐
2.7 overview of livedata knowledge points
Php Export word method (One MHT)
MySQL time zone solution
023(【模板】最小生成树)(最小生成树)
Fluent: Engine Architecture
Official website of Unicode query
The difference between lambda and anonymous inner class
elastic_ L04_ introduction. md
temp
Basic knowledge of OpenGL (sort it out according to your own understanding)
Interview experience in summer camp of Central South University in 2022
OpenGL index cache object EBO and lineweight mode
flinksql是可以直接客户端建表读mysql或是kafka数据,但是怎么让它自动流转计算起来呢?
Differences between MySQL Union and union all
DEJA_ Vu3d - cesium feature set 053 underground mode effect
2.8 overview of ViewModel knowledge
【mysql专项】读锁和写锁
Qt+vtk+occt reading iges/step model
Shell: basic learning
(数据库提权——Redis)Redis未授权访问漏洞总结









