zoukankan      html  css  js  c++  java
  • LeetCode 141. Linked List Cycle

    141. Linked List Cycle

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

    To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects to. If pos is -1, then there is no cycle in the linked list.

    Example 1:

    Input: head = [3,2,0,-4], pos = 1
    Output: true
    Explanation: There is a cycle in the linked list, where tail connects to the second node.
    

    Example 2:

    Input: head = [1,2], pos = 0
    Output: true
    Explanation: There is a cycle in the linked list, where tail connects to the first node.
    

    Example 3:

    Input: head = [1], pos = -1
    Output: false
    Explanation: There is no cycle in the linked list.
    

    Follow up:

    Can you solve it using O(1) (i.e. constant) memory?

    #include <iostream>
    
    using namespace std;
    
    
    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 *slow = head;
            ListNode *fast = head;
            while (fast && fast->next)
            {
                slow = slow->next;
                fast = fast->next->next;
                if (slow == fast) {
                    return true;
                }
            }
            return false;
        }
    };
    
    
    void test_data()
    {
        ListNode *head = new ListNode(0);
        ListNode *p;
    
        p = head;
        Solution s;
    
        int n = 0;
        int T = 5;
    
        while (T-- && cin >> n)
        {
            ListNode *q;
            q = new ListNode(n);
            p->next = q;
            p = q;
        }
    
        head = head->next;
        p->next = head;          //设置有环
        if (s.hasCycle(head)) {
            cout << "有环
    ";
        }
        else {
            cout << "无环
    ";
        }
    
    }
    
    
    void test_data1()
    {
        ListNode *head = new ListNode(0);
        ListNode *p;
    
        p = head;
        Solution s;
    
        int n = 0;
        int T = 5;
    
        while (T-- && cin >> n)
        {
            ListNode *q;
            q = new ListNode(n);
            p->next = q;
            p = q;
        }
    
        head = head->next;        //不设置有环
        if (s.hasCycle(head)) {
            cout << "有环
    ";
        }
        else {
            cout << "无环
    ";
        }
    }
    
    
    int main()
    {
    
        test_data();
    
        test_data1();
    
        return 0;
    
    }

  • 相关阅读:
    Django 类方式view进行进行用户验证
    Django-发送注册、忘记密码邮件验证-send_mail
    Django-当前菜单激活状态-模版 request | slice
    django url路由参数错误
    video.js不能控制本地视频或者音频播放时长
    Django中url使用命名空间的错误
    python_求相邻数
    scrapy_移除内容中html标签
    scrapy-redis功能简介
    Determining IP information for eth0...failed 错误解决
  • 原文地址:https://www.cnblogs.com/douzujun/p/10639307.html
Copyright © 2011-2022 走看看