zoukankan      html  css  js  c++  java
  • LeetCode OJ

    题目:

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

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

    解题思路:

      使用快慢指针,快指针每次走两步,慢指针每次走一步,若快指针能追上慢指针,则表明有圈。

    代码如下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        bool hasCycle(ListNode *head) {
            if (head == NULL) {
                return false;
            }
            
            ListNode *quicker = head->next;
            ListNode *slower = head;
            
            while ((quicker != NULL && quicker->next != NULL) && slower != NULL && quicker != slower) {
                quicker = quicker->next->next;
                slower = slower->next;
            }
            
            return quicker == slower;
        }
    };
  • 相关阅读:
    ARM IIC接口
    ARM硬件问题转载
    自动排版
    书签
    ARM硬件问题转载
    ATPCS规则1
    开发硬件所需的知识
    今天很崩溃呀
    回顾一下
    ARM汇编条件码
  • 原文地址:https://www.cnblogs.com/dongguangqing/p/3726422.html
Copyright © 2011-2022 走看看