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

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

思路:如果两个链表有公共节点,因为是两个单向链表,所以应该是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;
    }
}
原文地址:https://www.cnblogs.com/wxisme/p/5460297.html