• 剑指offer 36.时间空间效率的平衡 两个链表的第一个公共结点


    题目描述

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

    解题思路

    如果存在共同节点的话,那么从该节点,两个链表之后的元素都是相同的。
    也就是说两个链表从尾部往前到某个点,节点都是一样的。
    我们可以用两个栈分别来装这两条链表。一个一个比较出来的值。
    找到第一个相同的节点。

    代码如下

    public class FindFirstCommonNode {
        public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
            if (pHead1==null&&pHead2==null) {
                return null;
            }
            Stack<ListNode> stack1=new Stack<ListNode>();
            Stack<ListNode> stack2=new Stack<ListNode>();
            ListNode resultNode=null;
            while (pHead1!=null) {
                stack1.push(pHead1);
                pHead1=pHead1.next;
            }
            while (pHead2!=null) {
                stack2.push(pHead2);
                pHead2=pHead2.next;        
            }
            while (!stack1.isEmpty()&&!stack2.isEmpty()&&stack1.peek()==stack2.peek()) {
                stack2.pop();
                resultNode=stack1.pop();
            }
            return resultNode;
        }
        
        
        class ListNode {
            int val;
            ListNode next = null;
    
            ListNode(int val) {
                this.val = val;
            }
        }    
    }
  • 相关阅读:
    五种线程池的分类与作用
    什么是死锁?
    事务隔离级别区分,未提交读,提交读,可重复读
    共享锁(读锁)和排他锁(写锁)
    java中的成员变量和全局变量的区别
    Algorithm
    6
    5
    4
    3
  • 原文地址:https://www.cnblogs.com/Transkai/p/11287030.html
Copyright © 2020-2023  润新知