leetcode:160 Intersection of Two Linked Lists-每日编程第二十九题
来源:互联网 发布:sql编程基础 编辑:程序博客网 时间:2024/06/10 03:39
Intersection of Two Linked Lists
Total Accepted: 53988 Total Submissions: 181510 Difficulty: Easy
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.
思路:
1).计算链headA的长度len1,链headB的长度len2。
2).如果链A与链B 有交集,那么从最初的交点到两条链的末尾的节点数必然是相等的。
3).当len1>len2时,从链A的头节点遍历len1-len2个节点,使得headA,headB到链尾的节点数相同。len2>len1时,则对链B进行遍历。
4).最后,轮流比较节点直到null,判断中间是否曾出现相等,相等则返回此节点值,否则,返回null。
/** * 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) { ListNode* p = headA; int len1 = 0; while(p!=NULL){ len1++; p=p->next; } int len2=0; p = headB; while(p!=NULL){ len2++; p=p->next; } if(len1<len2){ while(len2!=len1){ headB = headB->next; len2--; } }else if(len1>len2){ while(len1!=len2){ headA = headA->next; len1--; } } while(len1>0&&headA!=headB){ headA = headA->next; headB = headB->next; len1--; } return headA; }};
0 0
- leetcode:160 Intersection of Two Linked Lists-每日编程第二十九题
- 【leetcode每日一题】NO160.Intersection of Two Linked Lists
- leetcode 160-Intersection of Two Linked Lists
- leetcode 160: Intersection of Two Linked Lists
- LeetCode(160) Intersection of Two Linked Lists
- [leetcode 160] Intersection of Two Linked Lists
- leetCode #160 Intersection of Two Linked Lists
- LeetCode(160) Intersection of Two Linked Lists
- LeetCode[160]Intersection of Two Linked Lists
- [LeetCode 160]Intersection of Two Linked Lists
- [LeetCode][160][Intersection of Two Linked Lists ]
- leetcode-160 Intersection of Two Linked Lists
- leetcode 160Intersection of Two Linked Lists
- LeetCode 160 :Intersection of Two Linked Lists
- leetcode[160]:Intersection of Two Linked Lists
- leetcode-160-Intersection of Two Linked Lists
- [Leetcode 160] Intersection of Two Linked Lists
- leetcode 160: Intersection of Two Linked Lists
- 理解MyGUI3.2.0及其Samples的运行实质
- android studio 更换包名
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 随笔
- POJ1426 Find The Multiple DFS
- leetcode:160 Intersection of Two Linked Lists-每日编程第二十九题
- jQuery中.live()方法的用法深入解析
- project euler 85
- iOS9新特性
- project euler 86
- Ubuntu 创建 eclipse launcher
- 解决Android使用第三方库.so自动删除问题
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- Android Studio 教程(干货)