走到盡頭見不到你,因而走過你來時的路,等到相遇時才發現,你也走過我來時的路。java
一種比較巧妙的方式是,分別爲鏈表A和鏈表B設置指針A和指針B,而後開始遍歷鏈表,若是遍歷完當前鏈表,則將指針指向另一個鏈表的頭部繼續遍歷,直至兩個指針相遇。code
若兩個鏈表相交,則指針A和指針B一定在相交結點相遇;若兩個結點不相交,則將會同時到達NULL。leetcode
public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB == null) return null; ListNode pA = headA, pB = headB; while (pA != pB) { pA = pA == null ? headB : pA.next; pB = pB == null ? headA : pB.next; } return pA; }
時間複雜度:O(n)get
空間複雜度:O(1)io
若是對您有幫助,記得留個贊喲~class