Leetcode_141_Linked List Cycle

97 篇文章 0 订阅
94 篇文章 18 订阅

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42833739



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

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


思路:

(1)题意为判断一个链表是否带环。这道题在校招笔试和面试中出现的次数还是比较多的。

(2)要判断是否带环,只需设置两个指针,从链表的起始点开始,分别往后遍历链表中的节点,如果在遍历的过程中两指针相遇,说明链表带有环。但是为了让它们在链表带环的情况下能够相遇,需要对两指针设置不同的步调,一个指针每次前进一步,另一个指针一次前进两步,这样如果前一个指针遍历到最后一个节点为空,则说明链表不带环;否则在遍历的过程中如果第一个指针和第二个指针相遇,则说明链表带环。

(3)希望本文对你有所帮助。


算法代码实现如下:

/**
 * @author liqq
 */
public boolean hasCycle(ListNode head) {
	if (head == null || head.next == null)
		return false;
	ListNode curr = head;
	ListNode sec = head;

	while (sec.next != null && sec.next.next != null) {
		curr = curr.next;
		sec = sec.next.next;
		if (curr == sec) {
			return true;
		}
	}
	return false;
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值