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

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

时间:2016-05-05 00:39:43      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

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

思路:如果两个链表有公共节点,因为是两个单向链表,所以应该是Y型的,从后向前找找到一个不相同的后一个节点就是第一个公共节点。可是使用两个辅助栈。

实现代码:

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
import java.util.*;
public class Solution {
    private Stack<ListNode> stack1,stack2;
    
    public Solution() {
        stack1 = new Stack<ListNode>();
        stack2 = new Stack<ListNode>();
    }
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
         
        ListNode cur1 = pHead1;
        ListNode cur2 = pHead2;
        
        while(cur1 != null) {
            stack1.push(cur1);
            cur1 = cur1.next;
        }
        
        while(cur2 != null) {
            stack2.push(cur2);
            cur2 = cur2.next;
        }
        ListNode ret = null;
        while(!stack1.isEmpty() && !stack2.isEmpty()) {
            ListNode node1 = stack1.pop();
            ListNode node2 = stack2.pop();
            if(node1 == node2) {
                ret = node1;
            }
            else break;
        }
        
        return ret;
    }
}

 

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

标签:

原文地址:http://www.cnblogs.com/wxisme/p/5460297.html

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