力扣-82 删除排序链表中的重复元素 II
题目描述存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表。示例源代码/*** Definition for singly-linked list.* struct ListNode {*int val;*ListNode *next;*ListNode() : val(0),
·
题目描述
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
示例
源代码
/**
* 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) {
if(!head) return head;
ListNode *ans=new ListNode(0,head);
ListNode *p=ans;
while(p->next && p->next->next)
{
if(p->next->val == p->next->next->val)
{
int temp=p->next->val;
while(p->next && p->next->val == temp)
{
p->next=p->next->next;
}
}
else p=p->next;
}
return ans->next;
}
};
复杂度分析:
-
时间复杂度:O(n),其中 n 是链表的长度。
-
空间复杂度:O(1)。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)