一、题目描述
二、解题思路
方法1:
使用哈希,js中Set数据结构,判断set里面有没有当前数字,没有则加入set里面,有则直接返回结果。
方法2:
因为数字都是0~n-1的范围,因此可以直接利用此特性将元素放到对应下标,如果出现重复的话就会一个下标出现了两个数字,直接返回。
三、代码实现
方法1:
var findRepeatNumber = function(nums) {
const s = new Set()
for(const num of nums){
if(s.has(num)) return num
s.add(num)
}
};
方法2:
var findRepeatNumber = function(nums) {
// for(let i=0;i<nums.length;i++){
// const id = nums.slice(i+1).indexOf(nums[i])
// if(id!=-1) return nums[i]
// }
for(let i=0;i<nums.length;i++){
if(nums[i]==i){
continue
}else if((nums[nums[i]]==nums[i])) return nums[nums[i]]
else{
[nums[nums[i]],nums[i]] = [nums[i],[nums[nums[i]]]]
}
}
if(nums[nums.length-1] == 0 ) return 0
};