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?

    错误解法。因为Cycle可能出现在Link的中间的,所以需要检查其中间Nodes。

    bool hasCycle(ListNode *head) {
    		// IMPORTANT: Please reset any member data you declared, as
    		// the same Solution instance will be reused for each test case.
    		if(head == NULL)
    			return false;
    
    		ListNode *cur = head;
    		while(cur != NULL)
    		{
    			cur = cur->next;
    			if(cur == head)
    				return true;
    		}
    		return false;
    	}


    正确解法:

    class Solution {
    public:
    
    	bool find(ListNode *head, ListNode *testpNode)
    	{
    		ListNode *p = head;
    		while (p != testpNode->next)
    		{
    			if(p == testpNode && p != testpNode->next)
    				return false;
    			p = p->next;
    		}
    		return true;
    	}
    
    
    	bool hasCycle(ListNode *head) {
    		// IMPORTANT: Please reset any member data you declared, as
    		// the same Solution instance will be reused for each test case.
    		if(head == NULL)
    			return false;
    
    		ListNode *cur = head;
    		while(cur != NULL)
    		{
    			if(find(head, cur))
    				return true;
    			cur = cur->next;
    		}
    		return false;
    	}
    };


     

  • 相关阅读:
    Spring Boot第四弹,一文教你如何无感知切换日志框架?
    Spring Boot 第三弹,一文带你了解日志如何配置?
    UVa 1625
    UVa 11584
    UVa 11400
    UVa 12563
    UVa 116
    UVa 1347
    UVa 437
    UVa 1025
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3398198.html
Copyright © 2011-2022 走看看