当前位置: 首页 > article >正文

83.删除排序链表中的重复元素 python

删除排序链表中的重复元素

  • 题目
    • 题目描述
    • 示例 1:
    • 示例 2:
    • 提示:
  • 题解
    • 算法步骤
    • 提交结果

题目

题目描述

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

示例 1:

在这里插入图片描述

输入:head = [1,1,2]
输出:[1,2]

示例 2:

在这里插入图片描述

输入:head = [1,1,2,3,3]
输出:[1,2,3]

提示:

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

题解

要解决这个问题,我们可以使用一个指针遍历链表,并在遍历过程中删除重复的节点。由于链表已经是排序的,所以任何重复的元素都会连续出现在链表中。我们只需要保留每个值的第一个出现,并移除后续相同值的所有节点。

以下是详细的算法步骤:

算法步骤

  1. 处理特殊情况:如果链表为空或只有一个节点,则直接返回链表。
  2. 初始化指针:设置一个指针 current 指向链表的头节点。
  3. 遍历链表
    • currentcurrent.next 都不为空时,检查 currentcurrent.next 的值是否相等。
    • 如果相等,说明 current.next 是一个重复节点,应该被删除(即跳过它)。
    • 如果不相等,则移动 current 到下一个节点。
  4. 返回结果:最终返回修改后的链表头节点。

下面是 Python 实现代码:

# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def deleteDuplicates(head: ListNode) -> ListNode:
    # 处理特殊情况
    if not head or not head.next:
        return head
    
    # 初始化指针
    current = head
    
    while current and current.next:
        if current.val == current.next.val:
            # 删除重复节点
            current.next = current.next.next
        else:
            # 移动到下一个节点
            current = current.next
    
    return head

提交结果

在这里插入图片描述


http://www.kler.cn/a/511356.html

相关文章:

  • 浅说树上倍增(下)
  • Kinova仿生机械臂Gen3搭载BOTA 力矩传感器SeneOne:彰显机器人触觉 AI 与六维力传感的融合力量
  • 第3章:Python TDD更新测试用例测试Dollar类
  • 高等数学:映射与函数
  • OpenMP并行编程实例系列2 —— 并行结构
  • 微服务学习:基础理论
  • sqlfather笔记
  • DQN【算法+代码】玩openai gym库游戏
  • 创建react18版本脚手架报错
  • SparseInst实例测试(含cuda10.1、pytorch1.8、detectron2安装过程)
  • C#中的语句
  • 【HTTP】详解
  • STL--set(集合)
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • JVM 面试八股文
  • Redis学习笔记1【数据类型和常用命令】
  • 查看代理设置Get-Item Env:https_proxy
  • < OS 有关 > 阿里云:轻量应用服务器 的使用 安装 Tailscale 后DNS 出错, 修复并替换 apt 数据源
  • 安装指南:LLaMA Factory、AutoGPTQ 和 vllm
  • 算法刷题笔记——图论篇
  • Java反射、静态代理、动态代理
  • 以单用户模式启动 Linux 的方法
  • 调试Hadoop源代码
  • 020:为什么 Resnet 如此重要?
  • K8S 容器重启策略
  • C#中如何使用异步编程