陣列中重複的值

2022-03-02 02:18:27 字數 1148 閱讀 3521

找出陣列中重複的數字。

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

示例 1:

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

輸出:2 或 3

限制:2 <= n <= 100000

下面是我的幾種解法:

我想到的就是字典:

public int findrepeatnumber(int nums) else

}return -1;

}

這種也是存在問題的,因為dictionary 是key 和value形式,value純屬浪費。

然後是陣列:

public int findrepeatnumber(int nums) 

} return -1;

}

但是一下子產生了陣列,可能在一些情況下陣列很多都浪費了。

那麼想到了集合

public class solution 

}return -1;}}

最後我看了別人的。

public class solution {

public int findrepeatnumber(int nums) {

int temp;

for(int i=0;i這種思路還是第一次見,然後主要在於審題,在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。

很巧妙,每次讓數字回到乙個位置上,那麼下乙個比較的就是和對應位置的數字做比較。可以畫乙個圖。

畫的有點凌亂,但是大概就是這個意思,當時我考慮的是是否會出現無限迴圈,後來證實了不可能。

因為這樣的,假如要形成無限迴圈的話,那麼nums[i]!=i就有不存在。

那麼除非是沒有這個數,否則一定會形成交叉。

那麼就在沒有這個數的情況下,只要有相等的那麼就會跳出迴圈。

那麼就在沒有這個數也沒有相等的情況下。

但是這種情況不可能,因為:在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。

刪除陣列中重複的值

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度2,並且原陣列 nums 的前兩個元素被修改為1,2...

陣列去掉重複的值

去掉陣列裡面的重複值有多種方法 定義乙個帶有重複值的陣列 var arr 1,1,2,5,8,5,4,6,5,7,5 定義乙個空陣列來接受 var arr1 迴圈原陣列 for var i 0 i arr.length i if j arr.length console.log arr1 這個方法就...

PHP 判斷陣列中是否有重複值並找出重複值

可以用來測試需要唯一憑據號碼的,是否有重複值,不過一般直接使用uuid了,簡單粗暴就解決問題,這個就簡單的測試生成的資料是否有重複值吧 author wyy date 2019 01 09 13 34 16 email 2752154874 qq.com last modified by wyy l...