LeetCode: Intersection of Two Linked Lists
来源:互联网 发布:中国原创服装品牌 知乎 编辑:程序博客网 时间:2024/05/17 07:09
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) { int l1 = 0, l2 = 0; ListNode *n1 = headA, *n2 = headB; while(n1 != NULL) { n1 = n1->next; l1++; } while(n2 != NULL) { n2 = n2->next; l2++; } int abs = std::abs(l1-l2); n1 = l1 > l2 ? headA: headB; n2 = l1 > l2 ? headB: headA; while(abs > 0) { n1 = n1->next; abs--; } while(n1 != NULL && n2 != NULL) { if(n1 == n2) return n1; else { n1 = n1->next; n2 = n2->next; } } return NULL; }};
Round 3:
class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if(headA == NULL || headB == NULL)return NULL; ListNode *pA = headA;ListNode *pB = headB;int count = 0;while(count <= 2){if(pA == NULL){pA = headB;count++;}if(pB == NULL){pB = headA;count++;}if(pA == pB){return pA;}pA = pA->next;pB = pB->next;}return NULL; }};
0 0
- [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: Intersection of Two Linked Lists
- 【LeetCode】Intersection of Two Linked Lists
- LeetCode Intersection of Two Linked Lists
- ss2H框架常遇到的错误记录
- Java:单例模式的七种写法
- 多线程编程3 - NSOperationQueue
- Longest Substring Without Repeating Characters
- 查找和为某值的两个数
- LeetCode: Intersection of Two Linked Lists
- 杭州女子朋友圈卖假货面对惩罚 买家心照不宣
- 应用DOM4J解析节点信息
- LeetCode-3Sum
- windbg分析dump文件
- Shader_0
- Loon游戏引擎(LGame)开发者鹏大重现江湖,目测又将改写Java界
- 黑马程序员————C语言基础 第13篇 字符串知识总结
- Android Studio安装及常见错误