题目描述如下
找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
解法1 暴力法O(n2)
var findRepeatNumber = function(nums) {
var arr = [];
for (var i = 0;i<nums.length;i++){
for(var j = 0;j<nums.length;j++)
if(nums[i] === nums[j] && i !== j){
return nums[i]
}
}
};
内存消耗40MB 用时1700MS
解法2 哈希法O(n)
var findRepeatNumber = function(nums) {
var map = new Map();
for(let i = 0; i < nums.length; i++){
if(map.get(nums[i]) === undefined){
map.set(nums[i],nums[i])
}else{
return map.get(nums[i])
}
}
};
内存消耗45MB 用时72MS