题目:
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof
题解:
方法一:借助hashset
hashset常用函数如下:
add(value),remove(value),clear()
contains(value)
size(), isEmpty()
class Solution {
public int findRepeatNumber(int[] nums) {
HashSet<Integer> set = new HashSet();
for(int num:nums){
if(set.contains(num)){
return num;
}else{
set.add(num);
}
}
return -1;
}
}
方法二:借助hashmap
hashmap常用函数如下:
get(key), put(key,value),putAll(Map),remove(key),clear()
containsKey(key), containsValue(value)
size(),isEmpty()
public int findRepeatNumber(int[] nums) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int num:nums){
if(map.containsKey(num)){
return num;
}else{
map.put(num,1);
}
}
return -1;
}