LeetCode83. Remove Duplicates from Sorted List

版权声明:本文为博主原创文章,欢迎转载!转载请保留原博客地址。 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

题目:从已经排好序的链表中删除重复的元素,重复的元素只保留一个。

思路:判断结点rootroot->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;
    }
};

猜你喜欢

转载自blog.csdn.net/grllery/article/details/88539348