考点
题解
1 2 3 4 5 6 7 8 9 10 11 12
| class Solution { public: ListNode* deleteDuplicates(ListNode* head) { ListNode *left = head, *right = head; while (right != nullptr) { while (right != nullptr && left->val == right->val) right = right->next; left->next = right; left = left->next; } return head; } };
|
思路
根据题意,链表已排序,那么重复的元素就一定是连续的;所以我们使用双指针来处理
左指针指向需要留下的元素,右指针作为游标指针
只要右指针的值等于左指针,就一直向右,遇到不同值停下,再将左右指针指向的节点连接起来即可