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

算法四十天-删除排序链表中的重复元素

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

题目要求

在这里插入图片描述

解题思路

一次遍历
由于给定的链表是排好序的,因此重复的元素在链表中的出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。
具体地,我们从指针cur指向链表的头节点,随后开始对链表进行遍历。如果cur.val == cur.next.val,可以直接将cur后移一位,移除值相同的链表。
当遍历完整这个链表时,返回链表的头节点就可以了

代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head or not head.next:return headcur = headwhile cur.next:if cur.val == cur.next.val:cur.next = cur.next.nextelse:cur = cur.nextreturn head

复杂度分析

时间复杂度: O ( N ) O(N) O(N)
空间复杂度: O ( 1 ) O(1) O(1)

http://www.lryc.cn/news/335409.html

相关文章:

  • Linux-等待子进程
  • 【LeetCode热题100】【二叉树】二叉树的最大深度
  • 想做产品经理,应该选择什么专业?
  • [机器学习Day 1~3
  • Day106:代码审计-PHP原生开发篇文件安全上传监控功能定位关键搜索1day挖掘
  • 数码视讯Q7盒子刷armbian遇到的坑之二
  • vue2 使用vue-org-tree demo
  • 【数据结构】考研真题攻克与重点知识点剖析 - 第 7 篇:查找
  • 【数仓】DataX 通过SpringBoot项目自动生成 job.json 文件
  • 注解式 WebSocket - 构建 群聊、单聊 系统
  • 无线游戏手柄的测试(Windows11系统手柄调试方法)
  • 计算机的各种转换
  • Git分布式版本控制系统——Git常用命令(一)
  • 【Node.js】短链接
  • 详解 Redis 在 Centos 系统上的安装
  • C语言 | Leetcode C语言题解之第17题电话号码的字母组合
  • wordpress全站开发指南-面向开发者及深度用户(全中文实操)--wordpress中的著名循环
  • libVLC 提取视频帧使用QGraphicsView渲染
  • 大厂Java笔试题之判断字母大小写
  • 场景文本检测识别学习 day02(AlexNet论文阅读、ResNet论文精读)
  • 4.9日总结
  • python第四次作业
  • 工业通信原理——Modbus-TCP通信规约定义
  • Vue - 4( 8000 字 Vue 入门级教程)
  • 5.118 BCC工具之xfsslower.py解读
  • Spark编程基础
  • React 状态管理:高效处理数组数据的5种方法
  • SSH和交换机端口安全概述
  • K-means聚类算法的原理、应用与实例
  • 使用SquareLine Studio创建LVGL项目到IMX6uLL平台