zoukankan      html  css  js  c++  java
  • [LeetCode]160. Intersection of Two Linked Lists判断交叉链表的交点

    方法要记住,和判断是不是交叉链表不一样

    方法是将两条链表的路径合并,两个指针分别从a和b走不同路线会在交点处相遇

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            if (headA==null||headB==null) return null;
            /*
            本来想用快慢指针做,把其中一个链表收尾相接,然后再用判断循环链表路口的方法
            但是觉得这个easy的题目应该不会这么复杂,看了答案却是有更好的方法
            求两个链表相交点的方法是:
            虽然两个链表可能不一样长,但是如果将两个链表长度叠加,然后两个指针从不同的路线走
            由于速度相同,路程相同,相遇的地方就是相交点
             */
            ListNode a = headA,b = headB;
            while (a!=b)
            {
                //a走完A再走B,这是一条录路线,另一条路线是b走完B再走A,到相交点时会相遇
                //这里要判断a是不是null而不是a.next,因为a和b需要走到null,如果不走的话,没有交点的两个链表会死循环
                a = (a==null)?headB:a.next;
                b = (b==null)?headA:b.next;
            }
            return a;
        }
  • 相关阅读:
    spirngmvc整合mybatis
    C#微信支付
    centos mysql数据库主从同步
    centos 搭建ftp
    修改 Docker 默认网桥地址
    安装docker
    脚本自动化装centos6.5 python2.6升级2.7
    centos6.5 python2.6升级2.7
    weblogic 安装及发布web应用
    centos6.5安装pip方法
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8446161.html
Copyright © 2011-2022 走看看