版权声明:本文为博主原创文章,欢迎转载!转载请保留原博客地址。 https://blog.csdn.net/grllery/article/details/88539348
83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
题目:从已经排好序的链表中删除重复的元素,重复的元素只保留一个。
思路:判断结点root
和root->next
对应的val
是否相等,如果相等,说明存在重复的元素,使得root->next
指向root->next->next
,然后再delete那个重复的结点,因为有可能有多个重复的元素,比如1->1->1
,因此在两个结点的val
相等时,只更新root->next
不更新root
;如果两个相邻结点的值不相等,此时再更新root
的指向。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* root = head;
while(root != nullptr && root->next != nullptr){
if(root->val == root->next->val){
ListNode* duplicate = root->next;
root->next = root->next->next;
delete duplicate;
}
else
root = root->next;
}
return head;
}
};