共计 488 个字符,预计需要花费 2 分钟才能阅读完成。
leetcode: 82. 删除排序链表中的重复元素 II
思路:设置哑结点, 一次扫描 ,遇到没有重复数字的节点就尾插到哑结点之后, 重复就跳过,直到最后一个节点
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {if(head==nullptr || head->next==nullptr)
return head;
ListNode *h=new ListNode(-1);
ListNode *rear=h,*p=head;
while(p!=nullptr)
{
// p 节点为 待判断的起始节点
ListNode *t=p; // 保存 p 节点
p=p->next; // 后移
while(p!=nullptr && p->val==t->val) // p 不为空,且值与起始节点相同, 后移
p=p->next;
// 此时 p 为 t 的下一个值的起始节点
if(p==t->next)
{// p 就是 t 的下一个节点, 说明 t 节点仅一个, 尾插法加入 h 中
rear->next=t;
rear=t;
}
}
rear->next=nullptr;// 截断
return h->next;
}
};
正文完
发表至: Leetcode
2023-01-13