LeetCode刷题笔记-数据结构-day11
Posted LL.LEBRON
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题笔记-数据结构-day11相关的知识,希望对你有一定的参考价值。
文章目录
LeetCode刷题笔记-数据结构-day11
160. 相交链表
1.题目描述
原题链接:160. 相交链表
2.解题思路
假设相交的情况,如图:
仔细观察可以看出:
- 我们只需要使用两个指针t1和t2分别从不同端扫描
- 如果到底了,两个指针交换扫描路线
- 可以得到,t1和t2扫描的最终距离都是a+b+c,最终在交汇点一定相遇
对于不相交的情况,使用上述方法最终也会返回null
3.代码
class Solution
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB)
auto t1=headA;
auto t2=headB;
while(t1!=t2)
if(t1) t1=t1->next;
else t1=headB;
if(t2) t2=t2->next;
else t2=headA;
return t1;
;
82. 删除排序链表中的重复元素 II
1.题目描述
原题链接:82. 删除排序链表中的重复元素 II
2.解题思路
题目大意:只要连续的一段相同元素个数超过1,就把相同的这段全部删掉。
为了方便处理边界情况,我们定义一个虚拟元素 dummy
指向链表头节点。
具体实现看代码。
3.代码
class Solution
public:
ListNode* deleteDuplicates(ListNode* head)
ListNode* dummy=new ListNode(-1);
dummy->next=head;
auto p=dummy;
while(p->next)
ListNode* q=p->next;
while(q->next&&p->next->val==q->next->val)
q=q->next;
//如果q==p->next,说明相同元素没有超过一个,正常遍历,p后移于一位
if(q==p->next) p=p->next;
//否则,直接将该段删除,p点不移动,继续扫描接下来的段
else p->next=q->next;
return dummy->next;
;
以上是关于LeetCode刷题笔记-数据结构-day11的主要内容,如果未能解决你的问题,请参考以下文章