36两个链表的第一个公共结点
2018-01-01 16:04
239 查看
题目描述
输入两个链表,找出它们的第一个公共结点。思路1:
首次遍历:算出2个链表的长度l1,l2。
第二次遍历,长的链表先走|l2-l1|步,然后2个链表同时遍历,找到第一个相同的节点输出。
1 public class Solution { 2 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { 3 int l1 = 0,l2 = 0,ldiff=0; 4 ListNode longp,shortp; 5 6 // 得到长度 7 for(ListNode p = pHead1;p!=null;p=p.next) 8 l1++; 9 for(ListNode p = pHead2;p!=null;p=p.next) 10 l2++; 11 if(l1>l2){ 12 ldiff = l1-l2; 13 longp=pHead1;shortp = pHead2; 14 } 15 else{ 16 ldiff = l2-l1; 17 longp=pHead2;shortp = pHead1; 18 } 19 //长链表先走 20 for(int i = 0;i<ldiff;i++){ 21 longp = longp.next; 22 } 23 //2个链表同时遍历 24 while(longp!=null){ 25 if(longp.val==shortp.val) return longp; 26 longp = longp.next; 27 shortp = shortp.next; 28 29 } 30 return null; 31 } 32 }
相关文章推荐
- 剑指offer 36 两个链表的第一个公共结点
- 【36】两个链表的第一个公共结点
- 剑指Offer——(36)两个链表的第一个公共结点
- 36、两个链表的第一个公共结点
- IMWeb提升营Day6 | 训练题36:两个链表的第一个公共结点
- (C++)剑指offer-36:两个链表的第一个公共结点(时间空间效率的平衡)
- 剑指offer:两个链表的第一个公共结点(java)
- 两个单向链表,判断它们是否相交,若相交,找出它们的第一个公共的结点
- 两个链表的第一个公共结点
- 剑指Offer 37 两个链表的第一个公共结点
- 【剑指offer】之两个链表的第一个公共结点
- 两个链表的第一个公共结点
- 两个链表的第一个公共结点
- 两个链表中的第一个公共结点
- 剑指Offer之 - 两个链表的第一个公共结点
- 剑指offer 面试题37 两个链表的第一个公共结点
- 面试题37:两个链表的第一个公共结点
- 剑指offer—两个链表的第一个公共结点
- 两个链表的第一个公共结点
- 剑指offer题解 两个链表的第一个公共结点