Leetcode 160.相交链表
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 160.相交链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
難度:簡單
頻率:140
題目
給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null 。
解題方法:雙指針遍歷
解題思路:
- 1.假設兩個鏈表沒有相交,即兩個指針分別遍歷 兩個鏈表(遍歷完第一個直接遍歷第二個head) 最后同時結束(同時為null)
- 2.假設兩個鏈表相交,即最后肯定是有一小段是同一段。即Y的下面**[C]**。
- 3.而兩個鏈表的總節點數總一定的**[A+C+B+C],最后又有一小段是一定的[C],故如果是相交,我們遍歷完第一個鏈表,再遍歷到相交點是的總節點數量是一定的[A+C+B=B+C+A]**,即同時動的話就會相交。
- 故只要同時遍歷,并且判斷是否兩指針相等即可。
- 相等的情況有兩種
- 第一種 沒有相交,跟1說的一樣,都是遍歷到結尾null處,直接返回null即可。
- 第二種 相交,而且相等點即為相交點。
代碼
需要注意的地方:
1.遍歷的時候,是遍歷完第一個鏈表即返回第二個鏈表頭節點head處。
2.遍歷的時候,只要不是null,就next;
總結
以上是生活随笔為你收集整理的Leetcode 160.相交链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 121 动态规划(原名
- 下一篇: Leetcode 103.二叉树的锯齿形