zoukankan      html  css  js  c++  java
  • 链表【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;
        }
    }


  • 相关阅读:
    ER模型
    一道人人的笔试题
    关系代数运算
    推荐两个不错的CAD二次开发(.Net)手册
    CAD 致命错误
    CAD二次开发(.NET)之PaletteSet和Palette
    养生
    我看面向对象
    .NET中参数化查询数据库
    自定义按照index和key访问的List
  • 原文地址:https://www.cnblogs.com/noaman/p/5708630.html
Copyright © 2011-2022 走看看