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;
            
        }
        
    }
  • 相关阅读:
    Atom使用教程
    4-[函数]-参数
    4-[函数]- 独立功能的代码块
    3 [文件]-修改文件
    2 [文件]-文件操作
    1. [文件]- 文件类型,文件open模式
    2-16 阶段考核
    react native 网络get请求方式参数不可为undefined或null
    [网络]远程访问局域网svn服务器[转]
    react native listview 一个有用的属性,用作两列布局
  • 原文地址:https://www.cnblogs.com/jieyi/p/14188599.html
Copyright © 2011-2022 走看看