zoukankan      html  css  js  c++  java
  • 两个链表的第一个公共节点

    package JianZhioffer;
    //当count=2时,实际上保证了双链表指针最后同时到达终点。但是如果到达终点都没有指到同一个结点,说明并没有相交结点。此时R与L都再次指向另外一个链表后count = 4,所以回返回null。
    //当指针按照题解方式走下去,p1第二次走到公共节点的时候,走过的长度为LA + C + LB,p2第二次走到公共节点的时候,走过的长度为LB + C + LA。p1 p2走过的长度相等,p1 p2 相遇。
    //输入两个链表,找出它们的第一个公共节点。
    public class test52 {
        public static void main(String[] args) {
            ListNode l1=new ListNode(4);
            l1.next=new ListNode(1);
            l1.next.next=new ListNode(8);
            l1.next.next.next=new ListNode(4);
            l1.next.next.next.next=new ListNode(5);
            ListNode l2=new ListNode(5);
            l2.next=new ListNode(0);
            l2.next.next=new ListNode(1);
            l2.next.next.next=new ListNode(8);
            l2.next.next.next.next=new ListNode(4);
            l2.next.next.next.next.next=new ListNode(5);
            ListNode result=getIntersectionNode(l1, l2);
            int x=0;
        }
        public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
            if (headA == null || headB == null) return null;
            ListNode L = headA;
            ListNode R = headB;
            int count=0; //当一个节点达到一个链表的尾部,则从另一个链表继续,同时count++
            while (L != R) {
                L = L.next;
                R = R.next;
                if (L == null) {
                    L = headB;
                    count ++;
                }
                if (R == null) {
                    R = headA;
                    count++;
                }
                if (count >2) {
                    return null;
                }
            }
            return L;
            
        }
        
    }
  • 相关阅读:
    博客园20071027上海聚会
    上海招聘.NET(C#)程序员
    招人
    漂亮的后台WebUi框架(有源码下载)
    js插件库系列导航
    PrestoSQL(trinodb)源码分析 执行(下)
    Extjs4 (二)
    Struts2(1)简介
    css中的字体
    什么是REST架构
  • 原文地址:https://www.cnblogs.com/jieyi/p/14188599.html
Copyright © 2011-2022 走看看