• [LeetCode] Remove Duplicates from Sorted List


    Given a sorted linked list, delete all duplicates such that each element appear only once.

    For example,
    Given 1->1->2, return 1->2.
    Given 1->1->2->3->3, return 1->2->3.

    给定一个含有重复元素的有序的列表,要求去除里面的重复元素。先判断边界条件,如果列表为空,或者列表只含有1个元素,则返回给定列表。接着使用一个cur指针遍历列表。如果遍历到重复元素,则删除该元素。如果没有遍历到重复元素,则让cur指针指向下一个元素。

    class Solution {
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            ListNode* cur = head;
            while (cur != nullptr && cur->next != nullptr) {
                if (cur->val == cur->next->val)
                    cur->next = cur->next->next;
                else
                    cur = cur->next;
            }
            return head;
        }
    };
    // 9 ms

    也可以使用简洁的递归写法。

    class Solution {
    public:
        ListNode* deleteDuplicates(ListNode* head) {
            if (head == nullptr || head->next == nullptr)
                return head;
            head->next = deleteDuplicates(head->next);
            return head->val == head->next->val ? head->next : head;
        }
    };
    // 13 ms
  • 相关阅读:
    java9的JShell小工具和编译器两种自动优化
    运算符
    数据类型
    常量&&变量
    强化学习复习笔记
    强化学习复习笔记
    DQN算法原理详解
    语言模型评价指标Perplexity
    C++ STL标准容器插入删除算法的复杂度
    集束搜索beam search和贪心搜索greedy search
  • 原文地址:https://www.cnblogs.com/immjc/p/7234724.html
Copyright © 2020-2023  润新知