1. 題目
力扣leetcode-cn.com
2. 描述
找出數組中重複的數字。
在一個長度為 n 的數組 nums 裡的所有數字都在 0~n-1 的範圍内。數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。
示例 1 : 輸入 : [2, 3, 1, 0, 2, 5, 3] 輸出 :2 或 3 限制:
2 <= n <= 100000
3. 實作方法
3.1 方法 1
3.1.1 思路
- 定義一個集合
來存放數組中出現過但不重複的數組;set
- 然後對數組中的元素進行判斷,若
中不含有,則加入set
;set
- 若
中已有該元素,則說明該元素是數組中重複出現的元素;set
- 列印該元素即可;
- 主要是對數組進行周遊操作,是以時間複雜度為 ;
3.1.2 實作
public int findRepeatNumber(int[] nums) {
Set<Integer> set = new HashSet<>();
int resutl = 0;
set.add(nums[0]);
for (int i = 1; i < nums.length; i++) {
if (set.contains(nums[i])) {
resutl = nums[i];
} else {
set.add(nums[i]);
}
}
return resutl;
}