【LeetCode】Intersection of Two Linked Lists
来源:互联网 发布:js二维数组姓名,年龄 编辑:程序博客网 时间:2024/06/08 00:37
Intersection of Two Linked Lists
Total Accepted: 16034 Total Submissions: 58142 My Submissions Question Solution
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
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.
Credits:
Special thanks to @stellari for adding this problem and creating all test cases.
Show Tags
【解题思路】
求解两个链表的公共节点,一定是后缀相等。
具体思路是,哪个链表长,就先遍历,一直到两个链表长度相等,再同时比较。
Total Accepted: 16034 Total Submissions: 58142 My Submissions Question Solution
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 → b3begin 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.
Credits:
Special thanks to @stellari for adding this problem and creating all test cases.
Show Tags
【解题思路】
求解两个链表的公共节点,一定是后缀相等。
具体思路是,哪个链表长,就先遍历,一直到两个链表长度相等,再同时比较。
Java AC
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { int len1 = 0; ListNode p = headA; while(p != null){ p = p.next; len1++; } int len2 = 0; p = headB; while(p != null){ p = p.next; len2++; } if(len1 > len2){ int k = 0; while(k < (len1-len2)){ headA = headA.next; k++; } } if(len2 > len1){ int k = 0; while(k < (len2 - len1)){ headB = headB.next; k++; } } p = headA; ListNode q = headB; while(p != q){ p = p.next; q = q.next; } return p; }}
Python AC
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # @param two ListNodes # @return the intersected ListNode def getIntersectionNode(self, headA, headB): len1 = 0; p = headA while p: p = p.next len1 += 1 len2 = 0 p = headB while p: p = p.next len2 += 1 k = 0 if len1 > len2: while k < (len1 - len2): headA = headA.next k += 1 else: while k < (len2 - len1): headB = headB.next k += 1 while headA != headB: headA = headA.next headB = headB.next return headA
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
- 判断多边形是否为平行四边形
- c51 Using使用
- 生活之美
- eclipse cocos2dx Command line too long
- 关于static 的意义---》thinking in java
- 【LeetCode】Intersection of Two Linked Lists
- android:imeOptions属性
- vi 翻页, 行首,行末命令
- Unicode 转换成 Ascii (把Unicode 中文字符串输入到文本中)
- 获得平行四边形中,那条较长的中心线
- Zookeeper的回调函数
- SQL优化--物理优化--表扫描与连接算法
- App接口开发经验谈(2)
- Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)