zoukankan      html  css  js  c++  java
  • 380. Intersection of Two Linked Lists【medium】

    Write a program to find the node at which the intersection of two singly linked lists begins.

    Notice
    • If the two linked lists have no intersection at all, return null.
    • The linked lists must retain their original structure after the function returns.
    • You may assume there are no cycles anywhere in the entire linked structure.
     
    Example

    The following two linked lists:

    A:          a1 → a2
                       ↘
                         c1 → c2 → c3
                       ↗            
    B:     b1 → b2 → b3
    

    begin to intersect at node c1.

    Challenge

    Your code should preferably run in O(n) time and use only O(1) memory.

    解法一:

     1 class Solution {
     2 public:
     3     /**
     4      * @param headA: the first list
     5      * @param headB: the second list
     6      * @return: a ListNode
     7      */
     8     ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
     9         // write your code here
    10         if(headA == NULL || headB == NULL)
    11             return NULL;
    12         ListNode* iter1 = headA;
    13         ListNode* iter2 = headB;
    14         int len1 = 1;
    15         while(iter1->next != NULL)
    16         {
    17             iter1 = iter1->next;
    18             len1 ++;
    19         }
    20         int len2 = 1;
    21         while(iter2->next != NULL)
    22         {
    23             iter2 = iter2->next;
    24             len2 ++;
    25         }
    26         if(iter1 != iter2)
    27             return NULL;
    28         if(len1 > len2)
    29         {
    30             for(int i = 0; i < len1-len2; i ++)
    31                 headA = headA->next;
    32         }
    33         else if(len2 > len1)
    34         {
    35             for(int i = 0; i < len2-len1; i ++)
    36                 headB = headB->next;
    37         }
    38         while(headA != headB)
    39         {
    40             headA = headA->next;
    41             headB = headB->next;
    42         }
    43         return headA;
    44     }
    45 };
  • 相关阅读:
    UVa 116 单向TSP(多段图最短路)
    POJ 1328 Radar Installation(贪心)
    POJ 1260 Pearls
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    UVa 1620 懒惰的苏珊(逆序数)
    POJ 1018 Communication System(DP)
    UVa 1347 旅行
    UVa 437 巴比伦塔
    UVa 1025 城市里的间谍
  • 原文地址:https://www.cnblogs.com/abc-begin/p/8157802.html
Copyright © 2011-2022 走看看