两个链表的第一个公共结点
题目:输入两个链表,找出它们的第一个公共结点。
思路:如果两个链表有公共节点,因为是两个单向链表,所以应该是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; } }
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112835275-168981902.gif)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112841431-2047172832.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112847494-1544911856.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112904385-918783221.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111120143119-1302805212.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112856369-1466718103.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111112830416-794416355.jpg)
![](https://images2015.cnblogs.com/blog/735119/201701/735119-20170111113919510-1155220901.gif)