Linked List Cycle(leetcode)

来源:互联网 发布:淘宝百圣珠宝怎么样 编辑:程序博客网 时间:2024/04/27 20:23

题目:

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

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

题目来源:https://oj.leetcode.com/problems/linked-list-cycle/

解题思路:设置两个指针,first和second,从链表头开始走,一个一次走一个节点,一个走两个,如果能够相遇则存在环,不能相遇而到大链尾则不存在环。

参考:《leetcode题解》

#include<iostream>#include<windows.h>using namespace std;struct ListNode {    int val;    ListNode *next;    ListNode(int x) : val(x), next(NULL) {}};bool hasCycle(ListNode *head){if(head==NULL)return false;ListNode *first=head,*second=head;while(second!=NULL && second->next!=NULL){first=first->next;second=second->next->next;if(first==second)return true;}return false;}  int main()  {  ListNode *head=new ListNode(1);head->next=new ListNode(2);head->next=new ListNode(3);head->next->next=head->next;cout<<hasCycle(head)<<endl;    system("pause");      return 0;  }



0 0
原创粉丝点击