zoukankan      html  css  js  c++  java
  • LC.160. Intersection of Two Linked Lists

    https://leetcode.com/problems/intersection-of-two-linked-lists/description/

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

    For example, the following two linked lists:

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

    begin to intersect at node c1.

    Notes:

      • 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.
      • Your code should preferably run in O(n) time and use only O(1) memory.
    //time:o(n) space:o(1)

     1 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
     2         if (headA == null || headB == null) {
     3             return null;
     4         }
     5         int lengthA = getLength(headA);
     6         int lengthB = getLength(headB);
     7         ListNode currA = headA;
     8         ListNode currB = headB;
     9         if (lengthA > lengthB) {
    10             while (lengthA != lengthB) {
    11                 currA = currA.next;
    12                 lengthA--;
    13             }
    14         } else {
    15             while (lengthB != lengthA){
    16                 currB = currB.next ;
    17                 lengthB--;
    18             }
    19         }
    20         //now they are the same length
    21         while (currA!=currB ){
    22             currA = currA.next ;
    23             currB = currB.next ;
    24         }
    25         //out of while, means currA == currB, including both == null
    26         return currA ;
    27     }
    28 
    29     private int getLength(ListNode head) {
    30         int length = 1;
    31         while (head != null) {
    32             head = head.next;
    33             length++;
    34         }
    35         return length;
    36     }
  • 相关阅读:
    第十四周课程总结&实验报告
    第十三周学习总结&实验报告(八)
    第十二周学习总结
    第十一周课程总结
    第十周课程总结
    实验报告(七)&第九周课程总结
    软件工程作业02
    第一周博客作业
    2019春总结作业
    第十二周作业
  • 原文地址:https://www.cnblogs.com/davidnyc/p/8642842.html
Copyright © 2011-2022 走看看