题目:输入两个链表,找出它们的第一个公共结点。
思路:如果两个链表有公共节点,因为是两个单向链表,所以应该是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; } }