leetcode fast slow pointer

原创 2015年11月19日 11:06:59

Introduction

In questions related to linked list, fast and slow pointer solution is very common. Fast pointer step two and Slow pointer step one. Always we can the regular through draw a picture and mathematical derivation, we can find:

  • middle of the linked list
  • interaction pointer to assert if there is a cycle

leetcode 141 Linked List Cycle

Question

Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

Solution

cycle
Only if there is a cycle, fast will catch up with the slow pointer.

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        fast = head
        slow = head
        while fast != None and fast.next != None:
            fast = fast.next.next
            slow = slow.next
            if fast == slow:
                return True
        return False

leetcode 142 Linked List Cycle II

Question

cycle
Fast pointer catch up slow when slow is on the first cycle. so:

  • slowLen = a + b
  • fastLen = (a + b) + n*r
  • fastLen = 2 * slowLen
  • a + b + n*r = a +b +b +c + (n-1)r = 2 (a + b)
  • c = a +( n - 1) * r

When they come across, slow from the head and fast from the meeting point, they will finally meet at the begin point of the cycle.

class Solution(object):
    def detectCycle(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        fast = head
        slow = head
        while fast and fast.next:
            fast = fast.next.next
            slow = slow.next
            if fast == slow:
                slow = head
                while fast != slow:
                    fast = fast.next
                    slow = slow.next
                return slow
        return None
版权声明:本文为博主原创文章,未经博主允许不得转载。

lvds fpga接口干扰解决方法

一、系统介绍 EMCCD相机由图像传感器、驱动电路、FPGA(Spartan-3)、LVDS接口和电源等组成。LVDS输出接口使用2片DS92LV1021,每片实现10bit并行数据到1路串行L...
  • gtkknd
  • gtkknd
  • 2014年10月12日 07:23
  • 4673

X265不同Preset下的默认参数

转自:http://blog.csdn.net/cyril1121/article/details/51323824 不同的Preset将直接影响编码的速度和解码后图像的质量,Preset级别越高...
  • z920954494
  • z920954494
  • 2016年07月14日 15:31
  • 1894

nrf52 - 快速广播与慢速广播

许多应用都对功耗有严格要求,而且会要求一直处于广播模式,这时就要考虑降低广播频率来降低功耗,此时可以称为慢速广播,但是广播频率越快越利于手机连接,所以为了快速发现和连接,往往需要快速广播,一般的处理方...
  • gyb510
  • gyb510
  • 2016年06月26日 18:42
  • 2097

leetcode 用fast-slow 指针的方法判断链表是否为回文链表。

题目: Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it i...
  • u012560212
  • u012560212
  • 2017年05月17日 21:06
  • 126

(Leetcode)链表的slow,fast指针使用

141. Linked List CycleGiven a linked list, determine if it has a cycle in it. Follow up: Can you sol...
  • muyu709287760
  • muyu709287760
  • 2016年11月06日 15:51
  • 209

thinking fast and slow

  • 2013年05月19日 22:18
  • 3.5MB
  • 下载

Daniel Kahneman - Thinking, Fast and Slow (v5.0)

  • 2012年11月19日 17:08
  • 1.14MB
  • 下载

Daniel Kahneman - Thinking, Fast and Slow.epub

  • 2012年12月31日 15:37
  • 840KB
  • 下载

[LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表

Copy List with Random Pointer   A linked list is given such that each node contains an add...
  • SUN20082567
  • SUN20082567
  • 2014年07月01日 18:22
  • 827

leetcode_138 Copy List with Random Pointer

题目分析:给定一个特殊的单链表,链表的每一个节点多了一个随机指针域,随机指向链表中的某一个节点。要求复制这个链表 解题思路:1)复制节点,并将拷贝后的节点插入到原节点的后面;2)更新所有复制的节点的r...
  • yzhang6_10
  • yzhang6_10
  • 2016年05月28日 17:00
  • 310
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode fast slow pointer
举报原因:
原因补充:

(最多只允许输入30个字)