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

    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

    直接上代码:

     1 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
     2         int lenA = getLength(headA);
     3         int lenB = getLength(headB);
     4         ListNode curA = headA;
     5         ListNode curB = headB;
     6         int count = lenA > lenB ? lenA - lenB : lenB - lenA;
     7         if (lenA > lenB) {
     8             for (int i = 0; i < count; i++) {
     9                 curA = curA.next;
    10             }
    11         }else{
    12             for (int i = 0; i< count; i++) {
    13                 curB = curB.next;
    14             }
    15         }
    16         while (curA != null && curB != null) {
    17             if (curA.val == curB.val) {
    18                 return curA;
    19             }
    20             curA = curA.next;
    21             curB = curB.next;
    22         }
    23         return null;
    24     }
    25     
    26     private int getLength(ListNode head) {
    27         ListNode dummy = new ListNode(0);
    28         ListNode cur = dummy;
    29         dummy.next = head;
    30         int count = 0;
    31         while (cur != null) {
    32             cur = cur.next;
    33             count++;
    34         }
    35         return count;
    36     }
  • 相关阅读:
    第三周助教总结
    第三周作业
    第二周助教总结
    参数和指针
    第二周作业
    第一周作业 2
    第一周作业 1
    第七周助教小结
    第六周助教小结
    第五周助教总结
  • 原文地址:https://www.cnblogs.com/gonuts/p/4647894.html
Copyright © 2011-2022 走看看