暴力破解
var findDuplicate = function(nums) {
const map = new Map();
for(let i=0,len=nums.length;i<len;i++){
const temp = map.get(nums[i]);
if(temp)return temp;
map.set(nums[i],nums[i]);
}
};
暴力破解
var findDuplicate = function(nums) {
let result = 0;
nums.sort((x,y)=>{
if(x===y)result = x;
return x-y;
})
return result;
};
暴力破解
var findDuplicate = function(nums) {
const arr = new Array(nums.length).fill(undefined);
for(let props in nums){
const temp = arr[nums[props]]
if(temp)return temp;
arr[nums[props]] = nums[props];
}
};
环形链表解法建议去看看关于环形链表的题。环形链表
var hasCycle = function(head) {
if(!head)return false;
let slow = fast = head;
do{
if(!fast || !fast.next)return false;
slow = slow.next;
fast = fast.next.next;
}while(slow!==fast);
return true;
};
var detectCycle = function(head) {
if(!head)return null;
let slow = fast = head;
do{
if(!fast || !fast.next)return null;
slow = slow.next;
fast = fast.next.next;
}while(slow !== fast);
slow = head;
while(slow!==fast){
slow = slow.next;
fast = fast.next;
}
return slow;
};
本题的答案
var findDuplicate = function(nums) {
let slow = 0;
let fast = 0;
do{
slow = nums[slow];
fast = nums[nums[fast]];
}while(slow!==fast);
slow = 0;
while (slow != fast) {
slow = nums[slow];
fast = nums[fast];
}
return slow;
};