• 链表【6】


    【题目】输入两个链表,找出它们的第一个公共结点。

    【思路】1 获取两链表的长度;

      2 让长的链表先走n步后,此时走到两链表位置相同;

      3 两链表同时遍历,直至相同第一个相同的结点值后即返回第一个公共结点。(已被牛客AC)

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
     		if(pHead1==null ||pHead2==null) return null;
            int len1=getLen(pHead1);
            int len2=getLen(pHead2);
            int val=len1-len2;
            ListNode longNode=pHead1;
            ListNode shortNode=pHead2;
            if(val<0){
                val=-val;
                longNode=pHead2;
                shortNode=pHead1;
            }
            for(int i=0;i<val;i++){
                longNode=longNode.next;
            }
            while(longNode!=null &&shortNode!=null){
                 if(shortNode.val==longNode.val){
               		 return longNode;
           		 }
                longNode=longNode.next;
                shortNode=shortNode.next;
            }
           
            return null;
        }
        public int getLen(ListNode pHead){
            int len=0;
            while(pHead!=null){
                len++;
                pHead=pHead.next;
            }
            return len;
        }
    }


  • 相关阅读:
    2017.3.22上午
    2017.3.21下午
    2017.3.21上午
    git上传到阿里云code
    spring+ibatis整合
    Aop资料整理
    java加密算法之AES小记
    单例的八种写法:推荐静态内部类和枚举
    dubbo入门示例
    自定义注解判空简单示例
  • 原文地址:https://www.cnblogs.com/noaman/p/5708630.html
Copyright © 2020-2023  润新知