算法与数据结构——硅谷& BAT 程序员必备的内功心法

Facebook早期工程师,知乎13万粉丝大V覃超亲自授课

算法与数据结构
(4人评价)
价格 ¥1799.00
抱歉,该课程为限制课程,请联系客服

闭环检测时候,使用walker和runner是通过链表的next指针获得的,不要理解成是数组中重复数字。

下面是leetcode的discuss。

public boolean hasCycle(ListNode head) {
    if(head==null) return false;
    ListNode walker = head;
    ListNode runner = head;
    while(runner.next!=null && runner.next.next!=null) {
        walker = walker.next;
        runner = runner.next.next;
        if(walker==runner) return true;
    }
    return false;
}
  1. Use two pointers, walker and runner.
  2. walker moves step by step. runner moves two steps at time.
  3. if the Linked List has a cycle walker and runner will meet at some
    point.

 

过程图:

 

[展开全文]

删掉 if len(nums) - 2 - i < 0: break

[展开全文]

授课教师

FreeS(峰瑞资本)技术合伙人,Facebook 早期员工&多年面试官。
AI小助手
StuQ 课程助手

课程特色

下载资料(10)
直播(8)
作业(12)