找出陣列中重複的數字。
在乙個長度為 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...