I. 问题描述
给定一个排序链表,删除所有重复的元素每个元素只留下一个,给出 1->1->2->null,返回 1->2->null。给出 1->1->2->3->3->null,返回 1->2->3->null
II. 解题思路
常规的依次遍历,发现相同的数据后将其覆盖。
III. 代码实现
class Solution
{
public:
ListNode *deleteDuplicates(ListNode *head)
{
if(!head||!head->next) return head;
ListNode *p=new ListNode(-1);
p->next=head;
head=p;
ListNode *k=head;
ListNode *q=head->next;
while(q)
{
if(q->val==k->val)
{
q=q->next;
k->next=q;
}
else
{
k=q;
q=q->next;
}
}
head=head->next;
return head;
}
};
IV. 个人感悟
覆盖往往是一种更方便的删除节点方式。
本文介绍了一种从已排序链表中移除重复元素的方法,确保每个元素仅出现一次。通过创建辅助节点并使用双指针技巧,有效地跳过重复项。此算法保留了链表的原有顺序。
374

被折叠的 条评论
为什么被折叠?



