⭐今日份题目
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例1
输入:head = [1,1,2] 输出:[1,2]
示例2
输入:head = [1,1,2,3,3] 输出:[1,2,3]
提示
-
链表中节点数目在范围
[0, 300]
内 -
-100 <= Node.val <= 100
-
题目数据保证链表已经按升序 排列
⭐题目思路
还是先提取一下题目特征点:
-
链表
-
已排好序
-
删除重复元素
根据题目描述,我们只需要基于当前位置判断后一个节点的数值是否与我的数值相等即可。
链表节点删除:删除当前节点,只需要让前边一个节点的后一个节点(本来应该是当前节点)变成当前节点的后一个节点即可。
很经典的一道链表节点删除题目,初学的同学可以多琢磨几遍哦~
⭐代码
/**
* 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* l=head;
if(head==NULL) return head;
while(l->next!=NULL)
{
if(l->val==l->next->val) l->next=l->next->next;
else l=l->next;
}
return head;
}
};
提交结果
🌮欢迎大家提供更高效的代码,如果过后有更优化的思路我还会继续更新的,大家评论区见!
点赞收藏不迷路⭐~