【面试必刷TOP101】 删除有序链表中重复的元素-I 删除有序链表中重复的元素-II

目录

题目:删除有序链表中重复的元素-I_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

题目:删除有序链表中重复的元素-II_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:删除有序链表中重复的元素-I_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类
*/
func deleteDuplicates( head *ListNode ) *ListNode {// write code here
}

解题思路:

说实话,遇到这种题目我的第一个反应就是马上把链表里的数存进一个数据结构帮我去重,在 C++ 我用的 set 去重,现在用 Golang 了我就可以用 map 来去重,

代码肯定是可以通过的,但是题目要求的时间复杂度是 O(N),这样子实际上是不符合要求的,所以还是得想一个算法来解决这个问题,

好消息是,这是一个有序的链表,所以我们直接遍历,遇到相同的数字就直接删除

代码:

package mainimport . "nc_tools"/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param head ListNode类* @return ListNode类*/
func deleteDuplicates( head *ListNode ) *ListNode {cur := headpre := headfor cur != nil {tmp := cur.Valcur = cur.Nextfor cur != nil && tmp == cur.Val { // 如果相等就删除节点cur = cur.Nextpre.Next = cur}pre = cur}return head
}

过啦!!!

题目:删除有序链表中重复的元素-II_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main
import . "nc_tools"
/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @return ListNode类
*/
func deleteDuplicates( head *ListNode ) *ListNode {// write code here
}

解题思路:

这道题和上一题很像,但是难度更高,他的边界问题更多,核心的部分就是怎么把重复的数字那部分给删除掉,

如果没出现重复的数字,cur 和 prev 两个指针就继续往前遍历,如果遇到重复的数字就删掉这段数字,通过 continue 再把 cur 和 prev 之间的位置调整好,代码如下:

代码:

package mainimport . "nc_tools"/** type ListNode struct{*   Val int*   Next *ListNode* }*//*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param head ListNode类* @return ListNode类*/
func deleteDuplicates(head *ListNode) *ListNode {if head == nil {return nil}h := &ListNode{Next: head}prev, cur := h, head.Nextfor prev.Next != nil && prev.Next.Next != nil && cur != nil {cur = prev.Next.Nextif prev.Next.Val == cur.Val { // 删除重复数字的逻辑for cur != nil && prev.Next.Val == cur.Val {cur = cur.Next}prev.Next = curcontinue}prev = prev.Nextcur = cur.Next}return h.Next
}

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析

AUTOSAR词典:CAN驱动Mailbox配置技术要点全解析 前言 首先,请问大家几个小小问题,你清楚: AUTOSAR框架下的CAN驱动关键词定义吗?是不是有些总是傻傻分不清楚呢?CAN驱动Mailbox配置过程中有哪些关键配置参…

C语言-扫雷游戏的实现

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

CMD脚本实战教程

要在 Windows 11 上编写一个自定义关机的 CMD 脚本文件,你可以创建一个扩展名为 .bat 或 .cmd 的文本文件,并在其中编写脚本。 一、常用语法 rem:注释 pause:暂停正在执行的批处理文件,并提示用户按键之后继续执行 r…

ps丢失d3dcompiler_47.dll怎么办,这四个方法都能解决

在当今的信息化社会,电脑已经成为我们生活和工作中不可或缺的一部分。然而,随着软件技术的不断发展,电脑在使用过程中也难免会遇到各种问题。其中,缺失d3dcompiler_47.dll文件是一个常见的问题。本文将为大家介绍如何修复电脑出现…

git:二、git的本地配置+工作区域和文件状态+git add/commit/log +git reset回退版本

git的使用方式 命令行(最常用)图形化界面IDE插件/拓展(次常用) git的本地/系统配置 之前的文章提到过git的全局配置。如下: git config --global user.name "ss" git config --global user.email "…

计算机毕业设计 基于SSM+Vue的物资存储系统(以消防物资为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

please choose a certificate and try again.(-5)报错怎么解决

the server you want to connect to requests identification,please choose a certificate and try again.(-5)

Centos7部署单机版MongoDB

目录 Centos7部署单机版MongoDBMongoDB介绍数据模型索引分布式高可用性查询语言驱动和社区用途缺点 下载并解压安装包创建相关文件夹和文件编辑mongod.conf文件启动mongodb创建管理员用户终止MongoDB服务配置自启动服务关闭SELinux编辑自启动服务文件mongodb服务命令 Centos7部…

坚鹏:中国邮政储蓄银行金融科技前沿技术发展与应用场景第4期

中国邮政储蓄银行金融科技前沿技术发展与应用场景第4期培训圆满结束 中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力,是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市,2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点…

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

【一】Spring Cloud 系列简介

Spring Cloud 系列简介 简介:从单体架构到分布式架构,再到微服务架构,一路经历走来spring框架也一直在与时俱进,回顾下来感觉做Java开发就是基于spring开发,spring也一路发展出了spring boot,在此基础上发…

七天学会C语言-第七天(结构体)

1.定义结构体 例 1&#xff1a;把一个学生的信息(包括学号、姓名、性别、住址等 4 项信息) 放在一个结构体变量中&#xff0c;然后输出这个学生的信息。 #include <stdio.h>struct Student {int student_id;char name[30];char gender;char address[60]; };int main() …

flex布局与float布局

float布局 俩栏 三栏 flex布局

力扣刷题-数组-螺旋矩阵

模拟过程&#xff0c;但却十分考察对代码的掌控能力。 重点&#xff1a;循环不变量原则&#xff01; 第一条原则&#xff1a; 模拟顺时针画矩阵的过程&#xff1a; 填充上行从左到右填充右列从上到下填充下行从右到左填充左列从下到上 由外向内一圈一圈这么画下去。 第二条原…

基于微信小程序的加油站服务管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取 前言 &#x1f497;博主介绍&#x…

八大排序(四)--------直接插入排序

本专栏内容为&#xff1a;八大排序汇总 通过本专栏的深入学习&#xff0c;你可以了解并掌握八大排序以及相关的排序算法。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;八大排序汇总 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库…

1.(vue3.x+vite)封装组件

前端技术社区总目录(订阅之前请先查看该博客) 关联博客 2.(vue3.x+vite)组件注册并调用 1:创建组件目录package,并创建相关工程结构 2:编写组件内容(index.vue) 3:添加注册组件方法(index.js) 4:添加路由

平滑加权轮询算法java实现

实现代码 /*** 功能描述: 平滑加权轮询算法** author zhang pu* date 11:46 2023/9/22*/public static void smoothnessWeightPollLoadBalance() {Server serverA new Server("127.0.0.1", 5, 0);Server serverB new Server("127.0.0.2", 3, 0);Server s…

深度学习从入门到入土

1. 数据操作 N维数组样例 N维数组是机器学习和神经网络的主要数据结构 0-d 一个类别&#xff1a; 1.0 1-d 一个特征向量(一维矩阵)&#xff1a;[1.0, 2.7, 3.4] 2-d 一个样本-特征矩阵-(二维矩阵) 3-d RGB图片 &#xff08;宽x高x通道&#xff09;- 三维数组 4-d 一个RGB…

React 全栈体系(十三)

第七章 redux 五、redux 异步编程 1. 理解 redux 默认是不能进行异步处理的,某些时候应用中需要在 redux 中执行异步任务(ajax, 定时器) 2. 使用异步中间件 npm install --save redux-thunk 3. 代码 - 异步 action 版 3.1 store /* src/redux/store.js */ /*** 该文件专…