题干
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字
解题
解题一、
/**
* @param {number[]} nums
* @return {number}
*/
var findRepeatNumber = function(nums) {
let arr =[];
for(let i of nums){
if(arr.indexOf(i) != -1){
return i
break
}else{
arr.push(i)
}
}
};
解题二、
/**
* @param {number[]} nums
* @return {number}
*/
var findRepeatNumber = function(nums) {
let temp
for(let i=0;i<nums.length;i++){
while(nums[i] != i){
if(nums[i] != nums[nums[i]]){
temp = nums[i]
nums[i] = nums[temp]
nums[temp] = temp
}else{
return nums[i]
}
}
}
};
解题三、
/**
* @param {number[]} nums
* @return {number}
*/
var findRepeatNumber = function(nums) {
let s=new Set();
for(var i in nums){
var curLenth=s.size;
s.add(nums[i]);
if(s.size==curLenth)
return nums[i];
}
};