给定一个已排序的链表的头 head
,
删除原始链表中所有重复数字的节点,只留下不同的数字 。返回
已排序的链表 。
示例 1:

示例 2:

提示:
- 链表中节点数目在范围
[0, 300]
内
-100 <= Node.val <= 100
- 题目数据保证链表已经按升序 排列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { ListNode* dummy = new ListNode(-1); ListNode* p = dummy; ListNode* q = head; while (q != nullptr) { if (q->next != nullptr && q->val == q->next->val) { int duplicateVal = q->val; while (q != nullptr && q->val == duplicateVal) { ListNode* temp = q; q = q->next; delete temp; } if (q == nullptr) { p->next = nullptr; } } else { p->next = q; p = p->next; q = q->next; } } ListNode* result = dummy->next; delete dummy; return result; } };
|