码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-02 11:19:40      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:off   就是   dex   node   amp   res   head   content   class   

题目描述

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

解题思路

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

代码如下

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;
        }
    }    
}

 

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

标签:off   就是   dex   node   amp   res   head   content   class   

原文地址:https://www.cnblogs.com/Transkai/p/11287030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!