[劍指offer系列] 03 陣列中重複的數字
阿新 • • 發佈:2020-12-10
技術標籤:劍指offer資料結構演算法leetcodejava演算法資料結構動態規劃
找出陣列中重複的數字。
在一個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意一個重複的數字。
示例 1:
輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
java解法一:
class Solution {
public int findRepeatNumber(int[] nums) {
int[] arr = new int[nums. length];
for(int i=0; i<nums.length; i++){
arr[nums[i]]++;
if(arr[nums[i]]>1) return nums[i];
}
return -1;
}
}
建立一個新的陣列儲存原陣列中的數字 , 原陣列的數字為新陣列的下標,每迴圈一次對應下標了數字就加一,就能知道什麼數字,重複了幾次
java解法二:
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set=new HashSet<Integer>();
int repeat=-1;
for(int num : nums){
if(!set.add(num)){
repeat=num;
break;
}
}
return repeat;
}
}
建立一個set集合(無序 , 唯一) , 將值放入,第一次放入正常,第二次如果放入重複的數字,會錯誤,如果出現錯誤則證明這個值重複,然後就break跳出迴圈,迴圈外用變數repeat存放值,最後返回repeat
看到最後的幫忙
點個贊