[leetcode 141] Linked List Cycle----判断链表是否为循环链表
2016-03-15 22:42
561 查看
Question:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
分析:
判断一个链表是否为循环链表,只要有NULL出现就不是循环链表。
方法:设置两个指针,第一个指针从头开始走两步每次,第二个指针每次从头开始走一步;如果第一个指针追上了第二个指针这说明是循环链表;否则不是循环链表。
代码如下:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
分析:
判断一个链表是否为循环链表,只要有NULL出现就不是循环链表。
方法:设置两个指针,第一个指针从头开始走两步每次,第二个指针每次从头开始走一步;如果第一个指针追上了第二个指针这说明是循环链表;否则不是循环链表。
代码如下:
<span style="font-size:14px;">/** * 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 || head->next == NULL) return false; ListNode* pre = head->next->next; ListNode* last = head; if(pre == NULL) return false; else{ while(pre != last){ if(pre->next != NULL && pre->next->next != NULL){ pre = pre->next->next; last = last->next; } else return false; } return true; } } };</span>
相关文章推荐
- iOS图片设置圆角
- iOS堆与栈的区别
- scala-String
- HBase分布式集群搭建
- linux 命令之 fork[1]
- ZLComboBox自定义控件开发详解
- 线程本地存储(TLS)的学习
- 多线程
- [JM] 如何结合标准看JM代码(JM86)
- 【已解决】如何判断处理器是大端,或小端?
- Android学习之路
- Eclipse Maven Project
- 2016.03.14 项目管理知识
- web打印
- 分享2015年底做的一个EDM案例-ACE酒店EDM营销
- Spring中AOP基于Annotation的零配置(2)
- 输出星号图
- Pg364作业题
- 结对编程项目:优化四则运算程序
- 二叉树系列——二叉树的深度