zoukankan      html  css  js  c++  java
  • LeetCode: Linked List Cycle 解题报告

    Linked List Cycle

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

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

    SOLUTION 1:

    经典快慢指针问题。如果存在环,fast, slow必然会相遇。就像2个速度不一样的人在环形跑道赛跑,总有一个时间他们会相遇。

    如果fast到达了null,就是没有环,可以返回false.

     1 package Algorithms.list;
     2 
     3 import Algorithms.algorithm.others.ListNode;
     4 
     5 /**
     6  * Definition for singly-linked list.
     7  * class ListNode {
     8  *     int val;
     9  *     ListNode next;
    10  *     ListNode(int x) {
    11  *         val = x;
    12  *         next = null;
    13  *     }
    14  * }
    15  */
    16 public class HasCycle {
    17     public boolean hasCycle(ListNode head) {
    18         if (head == null) {
    19             return false;
    20         }
    21         
    22         ListNode slow = head;
    23         ListNode fast = head;
    24         
    25         while (fast != null && fast.next != null) {
    26             slow = slow.next;
    27             fast = fast.next.next;
    28             if (slow == fast) {
    29                 return true;
    30             }
    31         }
    32         
    33         return false;
    34     }
    35 }
  • 相关阅读:
    WinForm画网格并填充颜色
    CodeCombat最后一题GridMancer
    TeeChart缩放
    TeeChart的网络资料
    TeeChart设置图表的标题
    TeeChart取消3D
    TeeChart的坐标轴
    TeeChart入门
    win7下配置IIS
    C#中的编译开关
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4132213.html
Copyright © 2011-2022 走看看