如何判断链表是否有环
来源:互联网 发布:java视频直播技术架构 编辑:程序博客网 时间:2024/05/21 09:58
141. 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?
使用一个数组、Map记录访问过的结点,可以解决但是消耗了空间。
package solutions._141;import utils.ListNode;import java.util.HashSet;import java.util.Set;public class Solution { public boolean hasCycle(ListNode head) { Set<ListNode> set = new HashSet<>(); while (head != null) { if (set.contains(head)) { return true; } else { set.add(head); } head = head.next; } return false; } public static void main(String[] args) { ListNode node1 = new ListNode(3); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(0); ListNode node4 = new ListNode(-4); node1.next = node2; node2.next = node3; node3.next = node4; node4.next = node1; System.out.println(new Solution().hasCycle(node1)); }}
或者可以使用两个快慢指针,一个每次步进1,一个每次步进2。
如果存在环的话,会有相遇的情况。否则快指针率先遇到null(存在环的话一定不存在next为null的结点)
package solutions._141;public class Solution { public boolean hasCycle(ListNode head) { if (head == null) { return false; } ListNode slow = head; ListNode fast = head; while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; if (fast == slow) { return true; } } return false; }
阅读全文
0 0
- 如何判断链表是否有环
- 如何判断链表是否有环
- 如何判断链表是否有环
- 如何判断链表是否有环
- 如何判断链表是否有环
- C程序:如何判断链表是否有环
- (学习记录)如何判断链表是否有环
- 如何判断链表是否有环的存在
- 如何判断一个链表是否有环?
- 如何判断一个链表是否有环?
- 如何判断一个链表是否有环,如果有环,并找出环的入口
- 如何判断两个有环单向链表是否有重合结点
- 判断链表是否有环
- 判断链表是否有环
- 判断链表是否有环
- 判断链表是否有环
- 判断一个链表是否有环
- 单向链表判断是否有环
- RequireJS模块化加载
- 如何在Ubuntu下安装go语言的Ethereum (geth)
- OkHttp的基本使用
- Mutex互斥体 学习
- Divide Two Integers--LeetCode
- 如何判断链表是否有环
- Event事件对象 学习
- 服务端做分页,分页多选,数据回显,动态修改
- 【mysql】Date和String的互相转换(DATE_FORMAT & STR_TO_DATE)
- ThinkPHP 3.2.2 视图模板中使用字符串截取函数
- seo关键词布局,网页头部优化(TDK),网站优化(古志强网络营销师)
- Android DVM和Java JVM以及ART概述
- MODEL/setup: Beidou frequencies on x-/c-file file not C2 and C7
- python干货分享/网址总结