牛客题解 | 删除有序链表中重复的元素-I

news/2025/2/22 14:54:50/文章来源:https://www.cnblogs.com/wc529065/p/18727242

题目

题目链接

题目主要信息:
  • 给定一个从小到大排好序的链表
  • 删去链表中重复的元素,每个值只留下一个节点
举一反三:

学习完本题的思路你可以解决如下题目:

BM16. 删除有序链表中重复的元素-II

方法:遍历删除(推荐使用)

思路:

既然连续相同的元素只留下一个,我们留下哪一个最好呢?当然是遇到的第一个元素了!

if(cur.val == cur.next.val) cur.next = cur.next.next;

因为第一个元素直接就与前面的链表节点连接好了,前面就不用管了,只需要跳过后面重复的元素,连接第一个不重复的元素就可以了,在链表中连接后面的元素总比连接前面的元素更方便嘛,因为不能逆序访问。

具体做法:

  • step 1:判断链表是否为空链表,空链表不处理直接返回。
  • step 2:使用一个指针遍历链表,如果指针当前节点与下一个节点的值相同,我们就跳过下一个节点,当前节点直接连接下个节点的后一位。
  • step 3:如果当前节点与下一个节点值不同,继续往后遍历。
  • step 4:循环过程中每次用到了两个节点值,要检查连续两个节点是否为空。

图示:

alt

Java实现代码:

import java.util.*;
public class Solution {public ListNode deleteDuplicates (ListNode head) {//空链表if(head == null) return null;//遍历指针ListNode cur = head; //指针当前和下一位不为空while(cur != null && cur.next != null){ //如果当前与下一位相等则忽略下一位if(cur.val == cur.next.val) cur.next = cur.next.next;//否则指针正常遍历else cur = cur.next;}return head;}
}

C++实现代码:

class Solution {
public:ListNode* deleteDuplicates(ListNode* head) {//空链表if(head == NULL) return NULL;//遍历指针ListNode* cur = head; //指针当前和下一位不为空while(cur != NULL && cur->next != NULL){ //如果当前与下一位相等则忽略下一位if(cur->val == cur->next->val) cur->next = cur->next->next;//否则指针正常遍历else cur = cur->next;}return head;}
};

Python实现代码

class Solution:def deleteDuplicates(self , head: ListNode) -> ListNode:#空链表if head == None: return None#遍历指针cur = head #指针当前和下一位不为空while cur and cur.next: #如果当前与下一位相等则忽略下一位if(cur.val == cur.next.val):  cur.next = cur.next.next#否则指针正常遍历else: cur = cur.nextreturn head

复杂度分析:

  • 时间复杂度:\(O(n)\),其中\(n\)为链表长度,遍历一次链表
  • 空间复杂度:\(O(1)\),常数级指针变量使用,没有使用额外的辅助空间

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客题解 | 二叉树的前序遍历

牛客输入输出题单题解题目 题目链接 题目的主要信息:给定一颗二叉树的根节点,输出其前序遍历的结果举一反三: 学习完本题的思路你可以解决如下题目: BM24.二叉树的中序遍历 BM25.二叉树的后序遍历 方法一:递归(推荐使用) 知识点:二叉树递归 递归是一个过程或函数在其定…

牛客题解 | 二叉树的后序遍历

牛客输入输出题单题解题目 题目链接 题目的主要信息:给定一颗二叉树的根节点,输出其后序遍历的结果举一反三: 学习完本题的思路你可以解决如下题目: BM23.二叉树的前序遍历 BM24.二叉树的中序遍历 方法一:递归(推荐使用) 知识点:二叉树递归 递归是一个过程或函数在其定…

FB内部使用地址寄存器案例 - 32位指针区域内间接寻址

案例内容:实现DQ32模块通道依次循环输出。利用循环左移指令,把默认值位16#1的DWORD循环左移,最后绑定QD,实现DQ32模块通道依次循环输出。限制1:不使用SCL实现,而用STL或LAD来实现。 限制2:DWORD被拆分为bit的时候会因大端模式导致的输出对应异常,需要重新梳理bit位和实际…

牛客题解 | 二分查找-I

牛客输入输出题单题解题目 题目链接 题目的主要信息:给定一个元素升序的、无重复数字的整型数组 nums 和一个目标值 target 找到目标值的下标 如果找不到返回-1举一反三: 学习完本题的思路你可以解决如下题目: BM18.二维数组中的查找 BM19.寻找峰值 BM21.旋转数组 方法:二分…

ML树构建简明教程

数据准备 Teamviewer登录实验室服务器,访问http://172.17.128.86:8501/CleanData,按照页面对应的格式要求分别从NCBI和GISAID数据库下载数据,拖拽到对应的位置,点击GO即可。Gisaid DNA Accession no.|DNA INSDC|Isolate name|Collection date|SegmentNCBI Format:>{acc…

windows11安装

准备工作 1.一个8G以上的U盘 2.可以上网的电脑 3.要安装的电脑接好可上网的网线开始:把U盘的资料先备份,因为制作U盘安装系统需要格式化U盘 打开微软官网下载 https://www.microsoft.com/zh-cn/software-download/windows11选择创建 Windows 11 安装媒体,会下载一个"me…

DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?

2025年伊始,Meta创始人扎克伯格的一则声明引发全球程序员热议:“AI将在今年达到中级工程师水平,逐步接管编程工作。”与此同时,国产AI大模型DeepSeek的爆火,让一名8岁女孩仅用45分钟开发出聊天机器人的案例刷屏全网。AI的代码能力已从“辅助工具”跃升为“协同开发者”,程…

java-调用火山引擎官方API

java-调用火山引擎官方API(字节跳动旗下的AI服务平台),AI模型包括:DeepSeek、豆包、其他。。。 2025-02-20 16:33:06 星期四一、官方平台入口: 入口如下:https://console.volcengine.com/user/basics/ 1>.使用方式:1.在开放平台注册账号具体按照指引及进行注册即可,包…

reactnative 手写签名报错

有没有大佬知道这种问题怎么解决!!!!! 在线等!!!

Ollama模型迁移

为了方便本地大模型部署和迁移,本文提供了一个关于Ollama的模型本地迁移的方法。由于直接从Ollama Hub下载下来的模型,或者是比较大的GGUF模型文件,往往会被切分成多个,而文件名在Ollama的路径中又被执行了sha256散列变换。因此我们需要从索引文件中获取相应的文件名,再进…

阻塞IO 非阻塞IO

网络IO流程三次握手流程阻塞IO非阻塞IO阻塞IO和非阻塞IO的区别 阻塞IO:io 未就绪的情况下,会阻塞线程等待 非阻塞IO:io 未就绪的情况下,立即返回socket默认的情况是阻塞的

How Do Recommendation Models Amplify Popularity Bias? An Analysis from the Spectral Perspective

目录概符号说明Popularity bias\(\mathbf{q}_1\) 和 \(\mathbf{r}\) 具有高相似度相似度随着维度降低而增加相似度随着训练的变化ReSN: Regulartion with Spectral NormLin S., Gao C., Chen J., Zhou S., Hu B., Feng Y., Chen C. and Wang C. How do recommendation models a…