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     }
  • 相关阅读:
    案例20:地下汽车库消防设施配置案例分析
    jsonp 跨域
    Cookie 工具类
    spring md5 加密
    sso 登录业务逻辑
    maven tomcat 插件
    <url-pattern>/</url-pattern> 拦截请求
    sso 系统分析
    FreeMarker 页面静态化解决方案
    FreeMarker 整合 springmvc
  • 原文地址:https://www.cnblogs.com/gonuts/p/4647894.html
Copyright © 2011-2022 走看看