题目
数字在 [0, n - 1] 范围内,用 -1 代表没有找到重复元素。
解题
解题一:哈希集合
// javascript
var findRepeatNumber = function(nums) {
let repeat = -1;
const set = new Set();
for (const num of nums) {
if (set.has(num) === true) {
repeat = num;
break;
}
set.add(num);
}
return repeat;
};
解题二:排序
// javascript
var findRepeatNumber = function(nums) {
let repeat = -1;
nums.sort((a, b) => a - b);
for (let i = 1; i < nums.length; ++i) {
if (nums[i] === nums[i - 1]) {
repeat = nums[i];
break
}
}
return repeat;
};
时间复杂度:排序
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn),遍历
O
(
n
)
O(n)
O(n),所以总的为
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)。
空间复杂度:排序
O
(
l
o
g
n
)
O(logn)
O(logn),总的为
O
(
l
o
g
n
)
O(logn)
O(logn)。