设计链表python(leetcode707)
#707. 设计链表
#设计链表的实现。链表中的节点应该具有两个属性:val
和 next
class Node:def __init__(self, val):self.val = valself.next = Noneclass MyLinkedList:def __init__(self):self.head = Node(0)self.length = 0def get(self, index: int) -> int:#获取链表第index个元素的val,index无效则返回-1if index < 0 or index >= self.length: #注意最后一个节点next没有valreturn -1curr = self.head# index steps needed # to move from sentinel node to wanted indexfor _ in range(index + 1):curr = curr.nextreturn curr.valdef addAtHead(self, val: int) -> None:#在第一个元素之前添加一个值为val的节点,新节点为head节点self.addAtIndex(0, val)def addAtTail(self, val: int) -> None:#将值为val的节点追加为最后一个元素self.addAtIndex(self.length, val)def addAtIndex(self, index: int, val: int) -> None:#在链表中的第 index 个节点之前添加值为 val 的节点。#如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点if index < 0:index = 0elif index > self.length:returnadd_node = Node(val)pre = self.headfor i in range(index):pre = pre.nextadd_node.next = pre.nextpre.next = add_nodeself.length += 1def deleteAtIndex(self, index: int) -> None:#如果索引 index 有效,则删除链表中的第 index 个节点if index < 0 or index >= self.length: # 最后一个节点是null,没有valreturnself.length -= 1# find predecessor of the node to be deletedpred = self.headfor _ in range(index):pred = pred.next# delete pred.next pred.next = pred.next.next# Your MyLinkedList object will be instantiated and called as such:
# obj = MyLinkedList()
# param_1 = obj.get(index)
# obj.addAtHead(val)
# obj.addAtTail(val)
# obj.addAtIndex(index,val)
# obj.deleteAtIndex(index)
设计链表python(leetcode707)相关推荐
- python求单链表的长度_709. 设计链表(Python)
题目 难度:★★☆☆☆ 类型:链表,设计题 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针 ...
- leetcode设计链表,非常工整的实现你值得拥有
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- 【实战】ACM 选手图解 LeetCode 设计链表
大家好呀,我是蛋蛋. 今天来设计链表,强行学明白链表的 5 种操作. 板凳摆好,直接开整. LeetCode 107:设计链表 题意 实现链表的查找.头插法.尾插法.通用插入.删除操作: get(in ...
- 卷进大厂系列之LeetCode刷题笔记:设计链表(中等)
学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下 ...
- Anaconda :利用Anaconda Prompt (Anaconda3)建立、设计不同python版本及对应库函数环境之详细攻略
Anaconda :利用Anaconda Prompt (Anaconda3)建立.设计不同python版本及对应库函数环境之详细攻略 目录 利用Anaconda Prompt (Anaconda3) ...
- Java设计链表(不带头结点的单链表)
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- 新浪微博爬虫设计(Python版)
最近手头上有一个项目,是关于新浪微博的,其中有一环要做新浪微博的爬虫.虽然之前把<Python学习手册>和<Python核心编程>都囫囵吞栆地通读完了,不过真正到做项目的时候还 ...
- 设计链表(Leetcode第707题)
此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 题目描述: 设计链表的实现 ...
- leetcode 《简单》 设计问题 Python实现
leetcode <简单> 设计问题 Python实现''' Shuffle an Array 打乱一个没有重复元素的数组.示例: // 以数字集合 1, 2 和 3 初始化数组. int ...
- python创意小作品-全国青少年创意编程与智能设计大赛Python创意编程比赛
全国青少年创意编程与智能设计大赛Python创意编程比赛 一.作品类型: 1.数字艺术 通过程序生成和展示视觉艺术,具备创意.美感和互动性. 2.互动游戏 各种竞技类.探险类.角色扮演类.球类. 棋牌 ...
最新文章
- 20162311 算法复杂度-3
- LeetCode() Remove duplicates from sorted list II
- 【数据结构与算法】之深入解析“填充每个节点的下一个右侧节点指针”的求解思路与算法示例
- 一个小清新搜索引擎试用感受 - 多吉搜索引擎(dogegoge)
- 【区块链Go语言实现】Part 1:区块链基本原型
- WinXp怎么开机进入Dos
- 限制只允许某个进程调用库
- 如何格式化用过的磁带,让他被新磁带机重复利用
- java 中如何比较时间先后,java中如何进行日期时间比较?4种方法介绍
- Python基本数据类型之字典
- 城市智能交通项目实施方案
- 面向后端的前端技术分享
- python mysqldb_python mysqldb 教程
- express实现图片上传
- 长春师范大学计算机科学与技术团委,计算机科学与技术系团总支学生分会纳新公告...
- 【C语言】题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 二十七、动词不定式 万事开头难
- iOS 最为经典的壁纸送上!安排
- python数据挖掘算法的书籍_机器学习和数据挖掘推荐书单
- opencv-python 轮廓查找 椭圆拟合 画椭圆
热门文章
- Unity3d 周分享(8期 2018.12.16)
- 学习Android studio时的报错Binary XML file line #10: Error inflating class fragment
- JAVA面试技巧之自我介绍
- ubuntu装指定分区_Ubuntu安装过程中如何手动指定分区
- HTML中绑定点击事件的方式
- 错误 LNK1104 无法打开文件“C:\Users\Administrator\Desktop\新建文件夹\ConsoleApplication1\x64\Debug\ConsoleApplicat
- MySQL 聚簇索引和非聚簇索引 mysql 索引为啥用b 树
- 怎么用计算机算lnx,ln计算(log计算器在线)
- android 播放器 samba,超强本地播放器一款支持samba、FTP/Windows共享服务-简单不折腾...
- 英语动词过去式和过去分词