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

代码随想录70期day3

203. Remove Linked List Elements

需要虚拟节点

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:dummy_head = ListNode(next = head)# iterate the whole list to remove the node whoose value equals to the number of valcurrent = dummy_headwhile current.next:if current.next.val == val:current.next = current.next.nextelse:current = current.next return dummy_head.next

707

Single linklists

# Single Linklist
class ListNode:def __init__(self,val = 0,next=None):self.val = valself.next = nextclass MyLinkedList:def __init__(self):self.dummy_head = ListNode()self.size = 0def get(self,index:int) -> int:if index < 0 or index >= self.size:return -1current = self.dummy_head.next for i in range(index):current = current.index return current.indexdef addAtHead(self,val:int) ->None:self.dummy_head.next = ListNode(val,self.dummy_head.next)self.size += 1def addAtTail(self,val:int)->None:current = self.dummy_headwhile current.next:current = current.next current.next = ListNode(val)self.size += 1def addAtIndex(self,index:int,val:int) -> None:if index < 0 or index >self.size:return current = self.dummy_headfor i in range(index):current = current.next current.next = ListNode(val,current.next)self.size += 1def deleteAtIndex(self,index:int) ->None:if index < 0 or index >= self.size:return current = self.dummy_headfor i in range(index):current = current.next current.next = current.next.nextself.size -=1

Double Linklist

class ListNode:def __init__(self,val =0,prev = None,next = None):self.val = val self.prev = prev self.next = next class MyLinkedList:def __init__(self):self.head = None self.tail = None self.size = 0def get(self,index:int)->int:if index < 0 or index >= self.size:return -1if index < self.size//2:current = self.headfor i in range(index):current = current.nextelse:current = self.tail for i range(self.size - index - 1):current = current.prev return current.val def addAtHead(self,val:int)->None:new_node =ListNode(val,None,self.head)if self.head:self.head.prev = new_node else:self.tail = new_node self.head = new_node self.size +=1def addAtTail(self,val:int)->None:new_node = ListNode(val,self.tail,None)if self.tail:self.tail.next = new_node else:self.head = new_nodeself.tail = new_node self.size += 1def addAtIndex(self,index:int,val:int)->None:if index < 0 or index > self.size:return if index == 0:self.addAtHead(val)elif index == self.size:self.addAtTail(val)else:if index <self.size //2:current = self.head for i in range(index - 1):current = current.next else:current = self.tail for i in range(self.size-index):current = current.prev new_node = ListNode(val,current,current.next)current.next.prev = new_node current.next = new_node self.size +=1 def deleteAtIndex(self,index:int)->None:if index < 0 or index >=self.size:return if index == 0:self.head == self.head.next if self.head:self.head.prev = None else:self.tail = None elif index == self.size -1:self.tail = self.tail.prev if self.tail:self.tail.next = None else:self.head = None else:if index < self.size//2:current = self.head for i in range(index):current = current.next else:current = self.tail for i in range(self.size-index-1):current = current.prev current.prev.next = current.next current.next.prev = current.prev self.size -=1 

206

# Two pointer version
class Solution:def reverseList(self,head:ListNode)->ListNode:cur = head pre = None while cur:temp  = cur.next cur.next = pre pre = cur cur = temp return pre# Recursive versionclass Solution:def reverseList(self,head:ListNode)->ListNode:return self.reverse(head,None)def reverse(self,cur:ListNode,pre:ListNode)->ListNode:if cur == None:return pre temp = cur.nextcur.next = prereturn self.reverse(temp,cur)
http://www.xdnf.cn/news/1465993.html

相关文章:

  • 算法(keep learning)
  • 外包干了3年,技术退步太明显了。。。。。
  • 计算机网络1 第一章 概述——以寄邮件比喻整个流程
  • threeJS 实现开花的效果
  • 概率论第三讲——多维随机变量及其分布
  • 要搞清楚你为什么上班
  • 大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
  • 深入剖析 ThreadLocal 及其生态系统:从基础用法到源码实现,从设计思想到工程实践
  • Android14 init启动Zygote详解
  • 必知!机器人的分类与应用:RPA、人形与工业机器人
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • solidity函数篇
  • 5分钟征服Linux:20个神级命令+系统架构解密,让命令行恐惧症瞬间治愈!
  • 智能风险评估与欺诈检测系统
  • 普通键盘在MacOS上如何使用快捷键
  • 分布式常见面试题整理
  • k8s 部署 redis
  • springboot redis 缓存入门与实战
  • [bat-cli] 输出处理 | `OutputType` 和 `OutputHandle`
  • 基于华为云平台的STM32F103C8T6工业生产线温湿度监控系统
  • 深度学习书籍推荐
  • LangChain: Models, Prompts 模型和提示词
  • UE4 Mac构建编译报错 no member named “disjunction” in namespace “std”
  • 企业为何仍困在“数据孤岛”?——从iPaaS重构信息流的实践路径
  • 一个专为地图制图和数据可视化设计的在线配色网站,可以助你制作漂亮的地图!
  • Leetcode—2749. 得到整数零需要执行的最少操作数【中等】(__builtin_popcountl)
  • 嵌入式系统学习Day31(多路IO复用)
  • Android Studio新版本编译release版本apk实现
  • 在Ubuntu 20.04的服务器上查找的服务器的IP地址
  • 2025最全的软件测试面试八股文(含答案+文档)