[Leetcode] Intersection of Two Linked Lists
来源:互联网 发布:淘宝一口价可以改高吗 编辑:程序博客网 时间:2024/06/09 15: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.
题意:求得两个链表的交汇点;
思路:
1. 两个指针同时对两个链表分别遍历,当指针相同时说明存在交汇点
2. 当两个指针遍历到末尾且均不相同时说明不存在交汇点
3. 当指针A遍历至尾时,将其重定向至B链表头,继续遍历,相同地将B重定向至A,这样即便两个链表长度不一时,遍历速度快的那个指针总
能追上慢者
时间复杂度O(M+N),空间上使用了四个临时指针:
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode *pa = headA,*pb = headB; if(!pa || !pb) { return NULL; } struct ListNode *pa_last = NULL, *pb_last = NULL; while(pa != pb) { if(pa_last == NULL && pa->next == NULL)/* Last of PA */ { pa_last = pa; } if(pb_last == NULL && pb->next == NULL)/* Last of PB */ { pb_last = pb; } if(pa_last && pb_last && pa_last != pb_last) { return NULL;/* end of two list not equal,No intersection */ } pa = pa->next; pb = pb->next; if(pa == NULL){ pa = headB; } else if(pb == NULL){ pb = headA; } } return pa;}
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
- 欢迎使用CSDN-markdown编辑器
- Golang 实现Bit数组
- Mac 安装pip
- 八、Nio之ServerSocketChannel
- 润乾报表v4-统计图中如何弹出超链接窗口
- [Leetcode] Intersection of Two Linked Lists
- [产品经理]敏捷(Agile)开发
- 配置log4j 打印mybatis sql以及执行结果
- Linux命令 - curl
- 图表概述
- C#各种日期计算汇总
- 清空委托
- 抽象类
- 1 基础知识