目录
原文链接:【LeetCode学习计划】《数据结构入门-C++》第8天 链表_Wang_Xin_Ling的博客-CSDN博客
83. 删除排序链表中的重复元素LeetCode: 83. 删除排序链表中的重复元素
原文链接:【LeetCode学习计划】《数据结构入门-C++》第8天 链表_Wang_Xin_Ling的博客-CSDN博客
83. 删除排序链表中的重复元素
LeetCode: 83. 删除排序链表中的重复元素
题目:
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
方法1:迭代
由于题目中给出的链表是排好序的,因此我们不用记录每个结点的值是否出现过。遍历链表时,如果下一个链表和当前的链表具有相等的值(通过键值对),就先停留在原地并删除下一个结点;如果不等就往后走一步。
动画演示
具体代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode *p = head;
while (p &&p->next)
{
if(p->val == p->next->val)
{
ListNode *dead = p ->next;
p->next = p ->next->next;
delete dead;
}
else
{
p = p->next;
}
}
return head;
}
};
206. 反转链表
LeetCode: 206. 反转链表
详细见昨天的打卡
【打卡】——【LeetCode学习计划】《数据结构入门-C++》第7天 链表_heart_6662的博客-CSDN博客