美文网首页
leetcode_287

leetcode_287

作者: 看到这朵小fa了么 | 来源:发表于2020-05-26 09:32 被阅读0次

https://leetcode-cn.com/problems/find-the-duplicate-number/solution/qian-duan-ling-hun-hua-shi-tu-jie-kuai-man-zhi-z-3/
licode题解:

141环形链表

查找是否为环形链表 快慢指针问题

var hasCycle = function(head) {
    let slowHead = head
    let fastHead = head
    while(fastHead && fastHead.next) {
        slowHead = slowHead.next
        fastHead = fastHead.next.next
        if(slowHead === fastHead) {
            return true
        }
    }
    return false
}
### 142环形链表的入环节点
快慢指针相遇后,理解为快指针比慢指针走了双倍的距离,所以这时让快指针从头单步递增,慢指针同步,两者相遇则为入环节点

var detectCycle = function(head) {
let slowHead = head
let fastHead = head
while(fastHead && fastHead.next) {
slowHead = slowHead.next
fastHead = fastHead.next.next
if(slowHead === fastHead) {
fastHead = head
while(slowHead !== fastHead) {
slowHead = slowHead.next
fastHead = fastHead.next
}
return slowHead
}
}
return null
};

### 287寻找重复数
寻找重复数,转化为快慢指针问题,数组中的数字为0-n-1,且一定会出现重复

var findDuplicate = function(nums) {
let slowPointer = 0
let fastPointer = 0
while (true) {
slowPointer = nums[slowPointer]
fastPointer = nums[nums[fastPointer]]
if (slowPointer == fastPointer) {
let _slowPointer = 0
while (nums[_slowPointer] !== nums[slowPointer]) {
slowPointer = nums[slowPointer]
_slowPointer = nums[_slowPointer]
}
return nums[_slowPointer]
}
}
};

相关文章

  • leetcode_287

    https://leetcode-cn.com/problems/find-the-duplicate-numbe...

网友评论

      本文标题:leetcode_287

      本文链接:https://www.haomeiwen.com/subject/ercmahtx.html