难度:简单
语言:js
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
方法一:
思路:将数组进行排序,如果有重复的数字,它们一定会相邻。
/**
* @param {number[]} nums
* @return {number}
*/
var findRepeatNumber = function(nums) {
// 1.对nums数组进行排序
nums.sort();
// 2.判断nums中相邻元素是否有值相同的,如果有,则说明有重复的元素
for (var i = 0; i < nums.length-1; i++) {
if(nums[i] === nums[i+1]) {
return nums[i];
}
}
};
方法二:
思路:借助数组,具体看注释。
/**
* @param {number[]} nums
* @return {number}
*/
var findRepeatNumber = function(nums) {
// 1. 定义对象 key为nums中的数字元素,value为true/false,表示是否出现过一次
let numObj = {};
for(var i = 0; i < nums.length; i++) {
// 如果数字是第一次出现
if(!numObj[nums[i]]) {
numObj[nums[i]] = true;
}else {
// 如果数字不是第一次出现,那一定是重复的数字
return nums[i];
}
}
};