LeetCode - #83 删除排序链表中的重复元素

news2024/11/20 8:34:45

文章目录

    • 前言
    • 1. 描述
    • 2. 示例
    • 3. 答案
    • 关于我们

在这里插入图片描述

前言

我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。

LeetCode 算法到目前我们已经更新了 82 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。

不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。

难度水平:简单

1. 描述

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

2. 示例

示例 1

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

示例 2

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

约束条件:

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

3. 答案

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public var val: Int
 *     public var next: ListNode?
 *     public init(_ val: Int) {
 *         self.val = val
 *         self.next = nil
 *     }
 * }
 */
class RemoveDuplicatesFromSortedList {
    func deleteDuplicates(_ head: ListNode?) -> ListNode? {
        guard let head = head else {
            return nil
        }
    
        var curt = head
        
        while curt.next != nil {
            if curt.next!.val == curt.val {
                curt.next = curt.next!.next
            } else {
                curt = curt.next!
            }
        }
        
        return head
    }
}
  • 主要思想:迭代列表,通过将 next 替换为 next.next 跳过重复项。
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

该算法题解的仓库:LeetCode-Swift

点击前往 LeetCode 练习

关于我们

我们是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术内容,也整理收集优秀的学习资料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

收藏 | 14 种免费 GIS 软件

如果你想绘制一幅世界地图&#xff0c;会选择什么GIS软件呢&#xff0c;ArcGIS、GlobalMapper这些都是国外比较出名的商业GIS软件&#xff0c;当然在国内很容易找到可用的版本&#xff0c;但是也可以使用免费的GIS软件完成所有操作。 这些免费的GIS软件为您提供了完成工作的效…

服务的熔断、降级与限流

1、引言 在微服务架构中&#xff0c;根据业务来拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff08;RPC&#xff09;。为了保证其高可用&#xff0c;单个服务通常会集群部署。由于网络原因或者自身的原因&#xff0c;服务并不能保证100%可用&#xff0c;如果…

基于Python的高校学生学业预警系统的设计与实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

基于STM32 ARM+FPGA的电能质量分析仪方案(二)软件设计

本部分主要介绍 FPGAARM 控制部分的软件设计。 FPGAARM 控制部分包括 Verilog HDL 硬件描述语言和 C 语言的开发。 FPGA 部分主要控制 AD7606 模数转换、数字三相锁相 环和FFT谐波计算模块、 SDRAM 控制器的设计、 FSMC 接口模块等。 ARM 部分主要完成嵌 入式实时操作系统 …

十个你必须要会的TypeScript技巧

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 1. 泛型的使用 泛型可以让我们编写更具灵活性、可重用性和类型安全性的代码。在 TypeScrip…

SpringBoot中15个常用启动扩展点,你用过几个?

背景 Spring的核心思想就是容器&#xff0c;当容器refresh的时候&#xff0c;外部看上去风平浪静&#xff0c;其实内部则是一片惊涛骇浪&#xff0c;汪洋一片。Springboot更是封装了Spring&#xff0c;遵循约定大于配置&#xff0c;加上自动装配的机制。很多时候我们只要引用了…

P35[10-5]硬件IIC配置+读写MPU6050(软)(此处注意与软件iic区别)

接线图如下: 注:硬件读写iic的连接位置固定,可参考引脚定义表(如下) 声明:I2C1重映射时,有一次更换机会,但是此面包板由于OLED的该引脚无法接线,因此只能接在PB10 PB11的I2C2上 软件iic初始化部分:(此处即可替代掉整个软件iic.c初始化的底层) void MPU6050_Init(vo…

知识变现绝学,3个步骤5个技巧用你的知识盈利?

知识就是生产力。 有的人通过学习各类知识&#xff0c;结果变的更加迷茫&#xff0c;更加没有方向了。 而有的人通过学习各类知识&#xff0c;结果变成了专家&#xff0c;实现了财务自由。 你想知道如何把这生产力去变现呢&#xff1f; 这个时代信息泛滥&#xff0c;人才泛滥…

305 · 矩阵中的最长递增路径

链接&#xff1a;LintCode 炼码 题解&#xff1a;九章算法 - 帮助更多程序员找到好工作&#xff0c;硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧 class Solution { public:/*** param matrix: A matrix* return: An integer.*/class Node {public:int x;int y;int val…

DNDC模型四:土壤碳储量与作物产量、农田减排潜力分析

查看原文>>>双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的实践应用 由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会…

遥感影像处理-监督分类

遥感图像分类是图像信息提取的一种方法&#xff0c;是遥感数字图像处理的重要环节&#xff0c;也是遥感应用最广泛的领域之一&#xff0c;其中提取土地利用分类信息也是常见的应用领域。本推文简要介绍了图像分类的原理和方式&#xff0c;并着重介绍了最大似然分类法监督分类在…

分布式事务:XA和Seata的XA模式

大家好&#xff0c;我是方圆。上一篇博客《从2PC和容错共识算法讨论zookeeper中的Create请求》介绍了保证分布式事务提交的两阶段提交协议&#xff0c;而XA是针对两阶段提交提出的接口实现标准&#xff0c;本文则对XA进行介绍。 1. XA XA &#xff08;eXtended Architecture …

第一章 基础算法(三)—— 双指针,位运算,离散化与区间合并

文章目录 双指针位运算离散化区间合并双指针练习题799. 最长连续不重复子序列800. 数组元素的目标和2816. 判断子序列 位运算练习题801. 二进制中1的个数 离散化练习题802. 区间和 区间合并练习题803. 区间合并 为什么直接用y总的板书&#xff1f; 我是懒狗&#xff0c;不想再画…

音乐考级系统python+mysql

目录 废话不多说下面看严谨版不带web界面的&#xff1a; 总结&#xff1a; 写这个博客呢主要是因为之前学校有个简单的课设要做&#xff0c;想着白嫖一个交差的&#xff0c;但是找了一圈没找到合适的能拿来用的&#xff0c;我就下班用了两晚手搓了一个代码。 具体的建表语句…

PCB设计实验|第二周|谐波振荡电路实验|3月6日

目录 实验二 谐波振荡电路实验 一、实验原理 二、实验环境 三、实验结果及分析 四、实验总结 实验二 谐波振荡电路实验 一、实验原理 利用深度正反馈&#xff0c;通过阻容耦合使两个电子器件交替导通与截止&#xff0c;从而自激产生方波输出的振荡器&#xff0c;常用作…

ChatGPT在前,华为盘古Chat在后

国产盘古Chat对话方面堪比GPT-3.5 什么是ChatGPT&#xff1f;简单来说&#xff0c;就是一个能够和人类自然对话的人工智能系统。它可以理解你的语言&#xff0c;回答你的问题&#xff0c;甚至给你提供建议和服务。它不仅可以处理文字&#xff0c;还可以处理图片、视频、音频等…

基于Java学生信息管理系统-控制台版

基于Java学生信息管理系统-控制台版 一、系统介绍二、功能展示1.学生信息添加2.学生信息修改3.学生信息查询4.学生信息删除5.退出系统 三、代码展示四、其它1.其他系统实现2.获取源码 一、系统介绍 学生信息的添加、修改、删除、查询、退出系统 二、功能展示 1.学生信息添加…

【面试题01】抽象类、接口 的区别和使用场景

文章目录 一、抽象类和接口的区别1.1 定义方式不同1.2.成员方法不同1.3 实现方式不同1.4 构造方法不同1.5 访问修饰符不同1.6 关注点不同 二、抽象类和接口的使用场景2.1 抽象类的使用场景2.2 接口的使用场景 三、PHP代码演示总结 一、抽象类和接口的区别 抽象类和接口基本上是…

提升效率,使用ChatGPT的轻松撰写日报和周报

日报和周报是办公生活中不可或缺的部分&#xff0c;它们有助于记录工作进展、分享关键信息和与团队保持沟通。但是&#xff0c;有时写作这些报告可能会变得繁琐和耗时。在本文中&#xff0c;我们将介绍如何利用ChatGPT&#xff0c;一个强大的自然语言处理模型&#xff0c;提高写…

安卓开发级联显示菜单-省市区显示举例

安卓开发级联显示菜单-省市区显示举例 问题背景 安卓日常开发过程&#xff0c;经常会有需要级联显示的场景&#xff0c;比如省市区显示等&#xff0c;或者各种组织结构级联显示&#xff0c;本文将介绍安卓开发过程实现级联显示的一种方案。 实现效果如下&#xff1a; 问题分…