Leetcode 83.删除排序链表中的重复元素【C++】

本文最后更新于:2022年3月23日 晚上

地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/

题目

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

示例 1:

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

示例 2:

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

解题思路

就是一个简单的遍历链表的方法,外层循环遍历链表中的每一个结点,内存循环查找这个结点后面的所有结点是否有重复元素,找到重复元素就将其删除。

需要考虑传入的链表为空的特殊情况。

代码

/**
 * 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 == NULL)
            return head;
        ListNode* cur = head;
        while (cur->next != NULL) 
        {
            ListNode* ptr = cur;
            while (ptr->next != NULL)
            {
                if (ptr->next->val == cur->val) {
                    ListNode* tmp = ptr->next;
                    ptr->next = ptr->next->next;
                    tmp->next = NULL;
                    delete tmp;
                }
                else
                    ptr = ptr->next;
            }
            if (cur->next != NULL)
                cur = cur->next;
        }
        return head;
    }
};

Leetcode 83.删除排序链表中的重复元素【C++】
https://mxy493.xyz/2020030653639/
作者
mxy
发布于
2020年3月6日
许可协议