判断一个链表是否是环形链表
给你一个链表的头节点 head 判断链表中是否有环。 如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。 如果链表中存在环 则返回 true 。 否则返回 false 。 示例 1 输入head [3,2,0,-4], pos 1 输出true 解释链表中有一个环其尾部连接到第二个节点。 示例 2 输入head [1,2], pos 0 输出true 解释链表中有一个环其尾部连接到第一个节点。 示例 3 输入head [1], pos -1 输出false 解释链表中没有环。核心思想使用快慢指针快指针每次走两步慢指针每次走一步。如果快指针走到了null说明是无环链表如果快指针追上了慢指针类似于套圈此时快慢指针指向相同的节点说明是有环链表。public class 环形链表 { 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 node2; System.out.println(hasCycle(node1)); } static class ListNode { int val; ListNode next; ListNode(int x) { val x; next null; } } public static boolean hasCycle(ListNode head) { if (head ! null) { ListNode a head; ListNode b head; do { a a.next; b b.next; if (b ! null) { b b.next; } }while (b ! null a ! b); if (b ! null) return true; else return false; } return false; } }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2467670.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!