两个链表的第一个公共节点
2016-06-15 16:04
99 查看
题目:
输入两个链表,找出他们的第一个公共节点。
输入:
单链表A:4,3,2,1,单链表:3,2,1
输出:
3
解题思路:
1、得到两个链表的长度,链表A减去链表B的长度得到变量DPSLength。
2、如果变脸DpsLength大于0,则链表A往前走DPSLength步,否则,链表B往前走DPSLength步。
3、接下来,两个链表同时遍历,直到找到相同的节点。
4、(没有写的解法)当然还有另外一种解法是需要利用辅助栈的,因为根据两个链表的特点,公共节点是出现在两个链表尾部的,只需要遍历一遍把他存入栈中,然后不停的再从栈中取出来,对比两个节点是否相同,那么公共节点由于是后进先出的缘故,所以,他一定是栈中最后一个相同的公共节点,这个节点就是我们要找的节点了。
Java实现代码:
输入两个链表,找出他们的第一个公共节点。
输入:
单链表A:4,3,2,1,单链表:3,2,1
输出:
3
解题思路:
1、得到两个链表的长度,链表A减去链表B的长度得到变量DPSLength。
2、如果变脸DpsLength大于0,则链表A往前走DPSLength步,否则,链表B往前走DPSLength步。
3、接下来,两个链表同时遍历,直到找到相同的节点。
4、(没有写的解法)当然还有另外一种解法是需要利用辅助栈的,因为根据两个链表的特点,公共节点是出现在两个链表尾部的,只需要遍历一遍把他存入栈中,然后不停的再从栈中取出来,对比两个节点是否相同,那么公共节点由于是后进先出的缘故,所以,他一定是栈中最后一个相同的公共节点,这个节点就是我们要找的节点了。
Java实现代码:
public static void main(String[] args) { // TODO Auto-generated method st Linked linkeder=new Linked(); LinkNode node1=new LinkNode(1); LinkNode node2=new LinkNode(2); LinkNode node3=new LinkNode(3); LinkNode node4=new LinkNode(4); linkeder.insertFirst(node1); linkeder.insertFirst(node2); linkeder.insertFirst(node3); linkeder.insertFirst(node4); Linked linked2=new Linked(); linked2.insertFirst(node1); linked2.insertFirst(node2); linked2.insertFirst(node3); System.out.println(findFirstComonNode(linkeder, linked2).data); } private static LinkNode findFirstComonNode(Linked head1,Linked head2){ int nLnegth1=head1.getListSize(); int nLnegth2=head2.getListSize(); int dpsLength=nLnegth1-nLnegth2; LinkNode node1=head1.header; //Long LinkNode node2=head2.header; //shart if(nLnegth2>nLnegth1){ dpsLength=nLnegth2-nLnegth1; node1=head2.header; node2=head1.header; } for(int i=0;i<dpsLength;i++){ node1=node1.next; } while(node1!=null && node2!=null && node1!=node1){ node1=node1.next; node2=node2.next; } LinkNode nodeCommon=node1; return nodeCommon; }
相关文章推荐
- 程序启动原理和UIApplication
- 曲线趋势函数
- 线性趋势函数
- Linux服务器安装JDK、Tomcat配置web网站
- NoSQL数据库-MongoDB和Redis
- wildcard
- GitHub上README.md教程
- 几种继承模式的比较
- strtol 获得字符串的前段整型数据
- AssetBundle资源打包
- acm之母函数题目4
- 使用命令管理概要文件
- 单链表的运算
- LeetCode:Minimum Size Subarray Sum
- HTML 标签自定义属性的问题
- svn: Can't convert string from 'UTF-8' to native encoding 的解决办法
- k近邻算法
- Resolving ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY error in Chrome version 45
- string的构造
- QxOrm编译使用手记