• 相交链表


    题目 相交链表

    编写一个程序,找到两个单链表相交的起始节点。
    例子:

    思路

    假设链表A的 4->1 这部分为 a , 8->4->5的这部分为 c A=a+c
    假设链表B的 5->0->1 这部分为 b , 8->4->5的这部分为 c B=b+c
    tip:即公共的部分为c

    那么现在在A的后面添加一条和B一样的链,在B后面添加一条和A一样的链
    A=(a+c) + (b+c) ; b=(b+c) + (a+c);
    即A=(a+c+b)+c ;B=(b+c+a)+c;
    聪明的你发现了吧,前面部分(a+c+b==b+c+a)是长度相同的,那么这道题就容易解决了,即第一个相同的点就是第一个交点

    代码

        public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            //A遍历完了给他接上B的,B遍历完第一次给他接上A的,当第一次相等的时候,就是交点
            if(headA==null||headB==null)
                return null;
            ListNode node1 = headA;
            ListNode node2 = headB;
            while(node1!=node2){
                if(node1==null){
                    node1=headB;
                }else{
                    node1=node1.next;
                }
                if(node2==null){
                    node2=headA;
                }else{
                    node2=node2.next;
                }
            }
            return node2;
        }
    
  • 相关阅读:
    ansible 批量在远程主机上执行命令
    SQLAlchemy
    operator, itertools
    mongodb基础语法
    django model Meta选项
    __getattr__,settr
    django的contenttype表
    time和datetime和tzinfo
    全局钩子的改名
    dom中文字居中
  • 原文地址:https://www.cnblogs.com/bendandedaima/p/13401629.html
Copyright © 2020-2023  润新知