leedcode-移除链表元素

news/发布时间2024/4/29 23:45:41

自己写的:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = nextclass Solution:def removeElements(self, head: Optional[ListNode], val):# 初始化一个元组 res,包含一个布尔值和链表头部的引用res = (True, head)# 循环调用 remove_val 方法,直到 remove_val 返回 False,表示没有找到要移除的值while res[0]:res = self.remove_val(res[1], val)# 返回最终处理后的链表头部return res[1]def remove_val(self, head, val):# 初始化当前节点为链表头部cur = head# 初始化前一个节点为 Nonepre = None# 遍历链表while cur != None:# 如果当前节点的值等于要移除的值if cur.val == val:# 如果前一个节点为 None,说明要移除的值在链表头部# 将链表头部更新为当前节点的下一个节点if pre == None:head = cur.nextelse:# 如果前一个节点不为 None,将前一个节点的 next 指向当前节点的下一个节点pre.next = cur.next# 将当前节点的 next 设为 None,断开当前节点的连接cur.next = None# 返回 True 表示已经找到并移除了值return True, headelse:# 如果当前节点的值不等于要移除的值,更新前一个节点和当前节点的引用pre = curcur = cur.next# 如果遍历完链表仍未找到要移除的值,返回 Falsereturn False, head

gpt改进:在头节点前面添加一个虚拟节点 可以省掉很多麻烦

class Solution:def removeElements(self, head: Optional[ListNode], val):# 创建一个虚拟头节点,简化对头部的处理dummy = ListNode(0)dummy.next = head# 初始化当前节点为虚拟头节点cur = dummy# 遍历链表while cur.next:# 如果当前节点的下一个节点的值等于要移除的值if cur.next.val == val:# 删除当前节点的下一个节点cur.next = cur.next.nextelse:# 如果当前节点的下一个节点的值不等于要移除的值,继续向后移动cur = cur.next# 返回虚拟头节点的下一个节点作为新的头部return dummy.next

 

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

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

相关文章

DSP笔记[1]-烧录.out文件测试数码管

使用CCS连接XDS110调试器烧录.out文件到TMS320F28335 DSP芯片测试开发板数码管.摘要 使用CCS连接XDS110调试器烧录.out文件到TMS320F28335 DSP芯片测试开发板数码管. 关键信息系统:macOS 13.5 (Apple Silicon M2) 开发环境:Code Composer Studio(CCS)12.4.0.00007 TMS320F28335…

tomcat拒绝连接解决方法

当发生拒绝连接的时候 1.首先要排除端口的占用 上一篇文章已经详细介绍了,这里不再赘述tomcat端口配置 2.设置防火墙放行tomcat 3.配置环境变量 此电脑→属性→高级系统设置→环境变量点击新建添加角色变量,值是文件的目录点击path,新建tomcat目录添加系统变量测试环境变量是…

NVIDIA安装CUDA在安装阶段提示NVIDIA安装程序失败

1.首先在NVIDIA官网上下载相应的CUDA 版本 https://developer.nvidia.com/cuda-toolkit-archive 安装过程出现上述报错!2.解决方法。下载完成直接双击,默认选择路径3.点击同意并继续4.选择自定义模式5.在选择组件的时候,将CUDA中的Nsight VSE和Visual Studio Integration取消…

如何避免MYSQL主从延迟带来的读写问题?

在MYSQL 部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取。但是既然是读写分离,必然会面临这样一个问题,当在主库上进行更新后,有可能数据还没来得及同步到从库,但是这个时候又有读数据的需求,为了…

求解MDP最优策略——动态规划(笔记)

求解MDP最优策略——动态规划 学习「强化学习」(基于这本教材,强动态规划烈推荐)时的一些总结,在此记录一下。动态规划 在马尔可夫决策过程环境模型已知(也就是状态转移函数P、奖励函数r已知)的情况下,我们可以通过 「动态规划」 求得马尔可夫决策过程的最优策略 \(\pi^…

【3.8】致敬女神节|广州流辰信息祝女性朋友们节日快乐!

在这个芬芳美丽的节日里,广州流辰信息向全体女同胞们送上最美好的祝福。你们是社会的中坚力量,是家庭的温暖港湾。无论在家庭、职场,还是在生活的每一个角落,你们都以独特的魅力影响着世界,使之变得更加美好。作为低代码技术平台服务商,在3.8这个特殊的节日里,广州流辰信…