• 两个链表的第一个公共结点


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

    实现语言:Java

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    import java.util.Stack;
    public class Solution {
        public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
            if(pHead1==null||pHead2==null){
                return null;
            }
            Stack<ListNode> stk1=new Stack<ListNode>();
            Stack<ListNode> stk2=new Stack<ListNode>();
            while(pHead1!=null){
                stk1.push(pHead1);
                pHead1=pHead1.next;
            }
            while(pHead2!=null){
                stk2.push(pHead2);
                pHead2=pHead2.next;
            }
            ListNode commonNode=null;
            while(!stk1.isEmpty()&&!stk2.isEmpty()&&stk1.peek()==stk2.peek()){
                stk1.pop();
                commonNode=stk2.pop();
            }
            return commonNode;
        }
    }
    

     实现语言:Java

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    import java.util.HashMap;
    public class Solution {
        public ListNode FindFirstCommonNode(ListNode head1, ListNode head2) {
            if(head1==null||head2==null){
                return null;
            }
            HashMap<ListNode,ListNode> map=new HashMap<ListNode,ListNode>();
            while(head1!=null){
                map.put(head1,head1);
                head1=head1.next;
            }
            while(head2!=null){
                if(map.containsKey(head2)){
                    return head2;
                }
                head2=head2.next;
            }
            return null;
        }
    }

    实现语言:Java

    /*
    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;
            }
            ListNode cur=pHead1;
            int n=0;
            while(cur!=null){
                ++n;
                cur=cur.next;
            }
            cur=pHead2;
            while(cur!=null){
                --n;
                cur=cur.next;
            }
            ListNode shortList=null;
            ListNode longList=null;
            if(n<0){
                shortList=pHead1;
                longList=pHead2;
            }else{
                shortList=pHead2;
                longList=pHead1;
            }
            n=n<0?-n:n;
            for(int i=0;i<n;++i){
                longList=longList.next;
            }
            while(shortList!=null&&longList!=null&&shortList.val!=longList.val){
                shortList=shortList.next;
                longList=longList.next;
            }
            return longList;
        }
    }
    
  • 相关阅读:
    CCS样式命名
    BFC机制
    html及css小结
    盒模型
    C#函数的使用方法
    如何读代码
    利用CSS-border属性实现圆饼图表
    WNMP环境搭建(win10+Ndinx1.9.15+MySQL5.7.12+PHP5.6.21)
    vue 项目优化:引入cdn使用插件, 减少打包体积
    'PORT' 不是内部或外部命令,也不是可运行的程序
  • 原文地址:https://www.cnblogs.com/xidian2014/p/10198734.html
Copyright © 2020-2023  润新知