LeetCode每日一题已坚持超过2月,在这两个月的时间里同一百多号人一起刷,一起成长。
期间刷过字典树、哈希表、字符串、数学类、二分、滑动窗口、链表、图、递归、动态规划等等数据结构内容。
在刷题当中成长,一起交流,后面将会持续刷题,输出更多算法内容,修炼内功。
今日题目:
【LeetCode每日一题】160. 相交链表
题解:
pA走过的路径为A链+B链
pB走过的路径为B链+A链
pA和pB走过的长度都相同,都是A链和B链的长度之和,相当于将两条链从尾端对齐,如果相交,则会提前在相交点相遇,如果没有相交点,则会在最后相遇。
pA:1->2->3->4->5->6->null->9->5->6->null
pB:9->5->6->null->1->2->3->4->5->6->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, *q = headB;
while (p != q) {
p = p ? p->next : headB;
q = q ? q->next : headA;
}
return p;
}
};