北京高端网站建设有限公司,软件项目管理心得,织梦网站图标路径,怎样建微信公众号文章目录 题目方法一#xff1a;哈希表set去重方法二#xff1a;快慢指针 题目 方法一#xff1a;哈希表set去重
思路#xff1a;我们遍历链表中的每个节点#xff0c;并将它记录下来#xff1b;一旦遇到了此前遍历过的节点#xff0c;就可以判定链表中存在环。借助哈希… 文章目录 题目方法一哈希表set去重方法二快慢指针 题目 方法一哈希表set去重
思路我们遍历链表中的每个节点并将它记录下来一旦遇到了此前遍历过的节点就可以判定链表中存在环。借助哈希表可以很方便地实现。 public ListNode detectCycle(ListNode head) {if(head null) return null;if(head.nextnull) return null;if(head.next.next head) return head;SetListNode NodeSet new HashSet();while(head ! null){if(NodeSet.add(head)){head head.next;continue;}else return head;}return null;}方法二快慢指针
第一次快慢指针相遇后。马上让新指针ptr从head 和slow同步走最终会在环点相遇 public ListNode detectCycle(ListNode head) {if (head null) return null;ListNode fast head;//快指针ListNode slow head;//慢指针while(fast!null){//满足快指针不空指针异常fast.next.next!null//移动指针slow slow.next;if(fast.next !null) fast fast.next.next;else return null;if(fastslow) {//说明一定有环了ListNode ptr head;//定义新指针从head出发while(ptr ! slow){ptr ptr.next;slow slow.next;}return ptr;}}return null;}