赞
踩
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(head == NULL) return head; auto slow = head,fast = head; while(fast!=NULL){ if(fast->val!= slow->val){ slow->next = fast; slow = slow->next; } fast = fast->next; } slow->next = NULL; return head; } };
给定一个已排序的链表的头 head
, 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { ListNode*dummy = new ListNode(-1); dummy->next = head; auto cur = dummy;//建立虚拟节点 while(cur->next){ auto nxt = cur->next->next; //nxt需要移动到与当前位置val不相等的情况 while(nxt && nxt->val == cur->next->val) nxt = nxt->next;//确保cur后面没有val相等的情况 if(cur->next->next == nxt) cur = cur->next; else cur->next = nxt; } return dummy->next; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。