[LeetCode]83. 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2

示例 2:

输入: 1->1->2->3->3 输出: 1->2->3

思路:

这是一道简单难度的题。因为链表有序,所以用一个指针游标往后探测,发现值相同就删掉后一个节点即可。

AC代码:

/**
 * 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) {
        if(head == nullptr)
            return nullptr;
        
        ListNode* cursor = head;
        while(cursor != nullptr && cursor->next != nullptr)
        {
            if(cursor->next->val == cursor->val)
                deleteNextNode(cursor);
            else
                cursor = cursor->next;
            
        }
        return head;
    }
    void deleteNextNode(ListNode* presentNode)
    {
        if(presentNode->next != nullptr)
        {
            ListNode* temp = presentNode->next;
            presentNode->next = temp->next;
            delete temp;
        }
    }
};

Published by