[leetcode][list] Intersection of Two Linked Lists
来源:互联网 发布:金蝶进销存源码 编辑:程序博客网 时间:2024/05/16 09:12
题目:
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
- If the two linked lists have no intersection at all, return
null
. - The linked lists must retain their original structure after the function returns.
- You may assume there are no cycles anywhere in the entire linked structure.
- Your code should preferably run in O(n) time and use only O(1) memory.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { if(NULL == headA || NULL == headB) return NULL; //分别遍历两个链表到最后一个节点并记录链表长度lenA和lenB ListNode *pA = headA; ListNode *pB = headB; int lenA = 1; int lenB = 1; while(pA->next){ ++lenA; pA = pA->next; } while(pB->next){ ++lenB; pB = pB->next; } //如果最后一个节点相等,则相交,否自,不相交 if(pA != pB) return NULL; //两遍历指针都指向各自链表的第一个节点,较长链表的那个指针先走abs(lenA-lenB)步,然后两个指针同步后移,第一次指向同一个节点的时候他们所指的那个节点即为所求 ListNode *pLong = headA; ListNode *pShort = headB; int lenDiff = abs(lenA - lenB); if(lenB > lenA){ pLong = headB; pShort = headA; } for(int i = 0; i < lenDiff; ++i) pLong = pLong->next; while(pLong != pShort){ pLong = pLong->next; pShort = pShort->next; } return pLong; }};
0 0
- [leetcode][list] Intersection of Two Linked Lists
- LeetCode[Linked List]: Intersection of Two Linked Lists
- 160. Intersection of Two Linked Lists leetcode (list)
- [leetcode] [leetcode]Intersection of Two Linked Lists
- 【LeetCode】Intersection of Two Linked Lists
- LeetCode: Intersection of Two Linked Lists
- [Leetcode] Intersection of Two Linked Lists
- [Leetcode]Intersection of Two Linked Lists
- LeetCode:Intersection of Two Linked Lists
- leetcode: Intersection of Two Linked Lists
- Leetcode: Intersection of Two Linked Lists
- Intersection of Two Linked Lists--leetcode
- [leetcode]Intersection of Two Linked Lists
- leetcode:Intersection of Two Linked Lists
- leetcode之Intersection of Two Linked Lists
- 【Leetcode】:Intersection of Two Linked Lists
- leetcode Intersection of Two Linked Lists
- [LeetCode]Intersection of Two Linked Lists
- 数字视频编解码基础知识大全
- 前缀判断
- leetcode 4 -- Median of Two Sorted Arrays
- centos7.1(1503)解决无法读取ntfs格式问题
- 龙格-库塔(Runge-Kutta)方法数学原理及实现
- [leetcode][list] Intersection of Two Linked Lists
- 4G百科:LTE-FDD和LTE-TDD的区别(科普性)
- Swift学习之每日一tip (6) 单例
- UVA 662 Fast Food(DP)
- U盘和电脑USB都是好的,可是插上u盘没任何反应!
- 黑马程序员 正则表达式
- ios视图层次结构
- hust校赛d题 PHP is the best language int the world(二分图着色+递推)
- UITableView NSThread 实现动态加载图片