1. 程式人生 > 其它 >[劍指offer系列] 03 陣列中重複的數字

[劍指offer系列] 03 陣列中重複的數字

技術標籤:劍指offer資料結構演算法leetcodejava演算法資料結構動態規劃

找出陣列中重複的數字。

在一個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意一個重複的數字。

示例 1:

輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:23 

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

看到最後的幫忙

點個