找出數組中的重複數字
題目描述
在一個長度爲 n 的數組 nums 裏的所有數字都在 0~n-1 的範圍內。數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。
- 限制:2 <= n <= 100000
示例
輸入:
[2, 3, 1, 0, 2, 5, 3]
輸出:2 或 3
解題思路
暴力破解
額,這個方法最容易想到吧!!!特別是像我這種菜鳥!!!
這方法沒啥好說的,雙重循環查找就好了,讓我難以置信的是居然過了!!!!
時間複雜度O(n²)
var findRepeatNumber = function(nums) {
for (let i=0; i<nums.length; i++) {
for (let j=i+1; j<nums.length; j++) {
if (nums[i] === nums[j]) {
return nums[i]
}
}
}
};
// 時間複雜度O(n²)
哈希
額,這也沒啥好說的,Map是ES6中的語法,不明白的可以看看阮大神的教程
時間複雜度o(n)
var findRepeatNumber = function(nums) {
let map = new Map()
for (let i=0; i<nums.length; i++) {
if (map.has(nums[i])) {
return nums[i]
} else {
map.set(nums[i])
}
}
};