[剑指offer]面试题37:两个链表的第一个公共结点
生活随笔
收集整理的這篇文章主要介紹了
[剑指offer]面试题37:两个链表的第一个公共结点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
面試題37:兩個鏈表的第一個公共結點
題目:輸入兩個鏈表,找出它們的第一個公共結點。鏈表結點定義如下:
思路:
兩個鏈表長度分別為L1+C、L2+C, C為公共部分的長度, 第一個人走了L1+C步后,回到第二個人起點走L2步;第2個人走了L2+C步后,回到第一個人起點走L1步。 當兩個人走的步數都為L1+L2+C時就兩個家伙就相愛了
代碼如下:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode *idx1 = headA;ListNode *idx2 =headB;while(idx1!=idx2){if (idx1!=nullptr)idx1 = idx1->next;else idx1 = headB;if (idx2!=nullptr)idx2 = idx2->next;else idx2 = headA;}return idx1;}測試用例:
● 功能測試(輸入的兩個鏈表有公共交點:第一個公共結點在鏈表的中間,第一個公共結點在鏈表的末尾,第一個公共結點是鏈表的頭結點;輸入的兩個鏈表沒有公共結點)。
● 特殊輸入測試(輸入的鏈表頭結點是NULL指針)
本題考點:
● 考查應聘者對時間復雜度和空間復雜度的理解及分析能力。解決這道題有多種不同的思路。每當應聘者想到一種思路的時候,都要很快分析出這種思路的時間復雜度和空間復雜度是多少,并找到可以優化的地方。
● 考查應聘者對鏈表的編程能力。
總結
以上是生活随笔為你收集整理的[剑指offer]面试题37:两个链表的第一个公共结点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克谈 OpenAI 动荡:很担心,I
- 下一篇: [剑指offer]面试题41:和为s的两