Killing LeetCode [82] 删除排序链表中的重复元素 II

Description

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

Intro

Ref Link:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/

Difficulty:Medium

Tag:LinkedList

Updated Date:2023-08-02

Test Cases

示例1:

复制代码
输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:

复制代码
输入:head = [1,1,1,2,3]
输出:[2,3]

提示:

复制代码
链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列

思路

  • 链表遍历

Code AC

复制代码
class Solution {
    /**
     * test case
     * 1 1 1   =====> null
     * 1 1 2   =====> 2
     */
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null) return head;
        ListNode preHead = new ListNode(-1);
        preHead.next = head;
        ListNode cur = preHead;

        while (cur.next != null) {
            ListNode pivot = cur.next; // might be deleted, need define pivot tmp node here
            while (pivot.next != null && pivot.val == pivot.next.val)
                pivot = pivot.next;
            if (cur.next == pivot)  // if no same val nodes, means not run into while loop, then cur moves to next 
                cur = cur.next;
            else                    // else cur.next need to be updated to pivot,next
                cur.next = pivot.next;
        }
        return preHead.next;
    }
}

Accepted

复制代码
166/166 cases passed (0 ms)
Your runtime beats 100 % of java submissions
Your memory usage beats 65.52 % of java submissions (41.5 MB)

复杂度分析

  • 时间复杂度:O(n),其中 n 是链表的长度。
  • 空间复杂度:O(1)。
相关推荐
kkeeper~8 小时前
0基础C语言积跬步之数据在内存中的存储
c语言·数据结构·算法
wabs6669 小时前
关于贪心算法的一些自我总结【力扣45.跳跃游戏II】【灵感来源:代码随想录】
算法·贪心算法·复盘
2401_876964139 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
嗝o゚10 小时前
CANN GE 算子融合——融合算法与调度策略
算法·昇腾·cann·ge
小江的记录本10 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
Ulyanov11 小时前
用声明式语法重新定义Python桌面UI:QML+PySide6现代开发入门(一)
开发语言·python·算法·ui·系统仿真·雷达电子对抗仿真
数据科学小丫11 小时前
特征工程处理
人工智能·算法·机器学习
z落落12 小时前
C#参数区别
java·算法·c#
c2385613 小时前
vector(下)
数据结构·算法
z落落13 小时前
C# 冒泡排序+选择排序 + Array.Sort 自定义排序
数据结构·算法