leetcode 141. 环形链表(快慢指针解法)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 141. 环形链表(快慢指针解法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
思路
絕對的經典題目,快慢指針,慢指針一次走兩步,快指針一次走一步,直到兩指針相遇,則說明有環。
關于評論區看到的一種思路,本質是做標記。這個辦法不是很好,一方面,如果測試用例足夠全的話,標記內容有可能與val重復,另一方面:
面試的時候我說過這個思路,結果面試官問我:那你遍歷之后,原來的數據還能用嗎?哎,慘。。
題解
這大概是寫的最快的一道題了,三分鐘寫出來的
// Definition for singly-linked list. class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;} }class Solution {public static void main(String[] args) {// 測試用例Solution solution = new Solution();ListNode node = new ListNode(1);System.out.println(solution.hasCycle(node));}public boolean hasCycle(ListNode head) {ListNode singleStep = head;ListNode multiStep = head;while (multiStep != null && multiStep.next != null) {singleStep = singleStep.next;multiStep = multiStep.next.next;if (singleStep == multiStep) return true;}return false;} }總結
以上是生活随笔為你收集整理的leetcode 141. 环形链表(快慢指针解法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 125. 验证回文串
- 下一篇: leetcode 155. 最小栈(常数