LEETCODE 160
来源:互联网 发布:谭咏麟你知我知被禁 编辑:程序博客网 时间:2024/06/04 09:18
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.
考虑错了一个问题:
只要两个开始指向同一个地址,那么后面的肯定就相同了。有兴趣的可以画一下,比如同时指向C1,假设后面的不同,那么C1就需要指向两个不同的地方,但是C1的NEXT只有一个。
思路:
(1)首先对齐链表,将长的去头,因为相交不可能在前面,道理和前面一样,如果前面一样了,那么后面肯定一样。
(2)然后两两对比,直到找到相同的点。
/** * 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 lenA = 0, lenB = 0; ListNode* tempA = headA; ListNode* tempB = headB; while(tempA != NULL) { tempA = tempA->next; ++lenA; } tempA = headA; while(tempB != NULL) { tempB = tempB->next; ++lenB; } tempB = headB; if (lenA > lenB) for (int i = 0; i < lenA - lenB; ++i) tempA = tempA->next; if (lenB > lenA) for (int i = 0; i < lenB - lenA; ++i) tempB = tempB->next; while(tempA != tempB) { tempA = tempA->next; tempB = tempB->next; } return tempA; }};
0 0
- LEETCODE 160
- leetcode #160 in cpp
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- 水牛VPN,
- UML类图几种关系的总结
- Pku oj 1064 Cable master(二分搜索)
- HDU 1.3.4 百步穿杨
- 针对Android Service不能隐式启动的问题
- LEETCODE 160
- HDU 1.3.5 Wooden Sticks
- Hive 表加载,导出和查询
- UISwitch 的具体使用方式
- C#操作ZIP的方法
- HDU 1.3.6 Rank
- 进程的同步与互斥
- select a method for export 选项
- 摇奖机-多线程