题目

难度:★★☆☆☆

类型:链表,设计题

设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。

在链表类中实现这些功能:

get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。

addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。

addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。

addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。

deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。

解答

网上有很多针对这道题的解答,还有人吐槽这道题为什么被当做难题来做。这里笔者使用python3中的列表实现题目中要求的链表。需要注意下标越界时的处理,不然会有各种bug。

class MyLinkedList:

def __init__(self):

"""

Initialize your data structure here.

"""

self.linked_list = []

def get(self, index: int) -> int:

"""

Get the value of the index-th node in the linked list. If the index is invalid, return -1.

"""

if 0 <= index <= len(self.linked_list) - 1:

return self.linked_list[index]

else:

return -1

def addAtHead(self, val: int) -> None:

"""

Add a node of value val before the first element of the linked list. After the insertion, the new node will be the first node of the linked list.

"""

self.linked_list.insert(0, val)

def addAtTail(self, val: int) -> None:

"""

Append a node of value val to the last element of the linked list.

"""

self.linked_list.append(val)

def addAtIndex(self, index: int, val: int) -> None:

"""

Add a node of value val before the index-th node in the linked list. If index equals to the length of linked list, the node will be appended to the end of linked list. If index is greater than the length, the node will not be inserted.

"""

if index <= len(self.linked_list):

self.linked_list.insert(index, val)

def deleteAtIndex(self, index: int) -> None:

"""

Delete the index-th node in the linked list, if the index is valid.

"""

if 0 <= index <= len(self.linked_list) - 1:

return self.linked_list.pop(index)

如有疑问或建议,欢迎评论区留言~

python求单链表的长度_709. 设计链表(Python)相关推荐

  1. python长度多少_用Python求最长子串长度快速版

    哈喽大家好,周二也是令人愉快的一天啊,今天天气不错,坐在窗户旁边边晒太阳边写文章,再泡杯热茶,真是舒服美好,废话不多说,今天说一下Python求最长子串长度,希望对大家有作用,raksmart服务器. ...

  2. python接单业余赚钱的门路_用Python赚钱的5个方法,教你业余时间月赚几千外快...

    原标题:用Python赚钱的5个方法,教你业余时间月赚几千外快 Python作为一门编程语言,一门技术,就一定能够为我们所用,至少赚个外快是绝对没有问题的. 我之前做过半年少儿编程老师,一个小学四年级 ...

  3. python求三个整数最大值_实例讲解Python中整数的最大值输出

    实例讲解Python中整数的最大值输出 在Python中可以存储很大的值,如下面的Python示例程序: x = 1000000000000000000000000000000000000000000 ...

  4. python求单次测量的标准偏差

    #将用户输入的数字储存到一个列表里 series=[] while True:number=input('''请输入:(enter "F" to stop)''' )if numb ...

  5. 用python求两个人的平均身高_黄哥Python:分治算法(Divide-and-Conquer)

    分治算法(Divide-and-Conquer) 在计算机科学中,分而治之(简称分治法)是基于多分支递归的算法设计范例.分而治之算法的工作原理是将问题递归分解为两个或多个相同或相关类型的子问题,直到这 ...

  6. 用python求两个人的平均身高_大学python题 求大佬解答!!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 7-4 计算指数 (5 分) 真的没骗你,这道才是简单题 -- 对任意给定的不超过10的正整数n,要求你输出2n.不难吧? 输入格式: 输入在一行中给出一 ...

  7. python求三个整数最大值_怎么用python比较三个数大小

    大部分初学编程的人来说刚开始都会练习判断两个数或者三个数的大小,来熟悉某种语言的特性和最基本的if,else循环,当我们学习了更高级的语法知识后,又会有不同的实现方式,比如依次接收用户输入的3个数,排 ...

  8. 零基础学Python———求一个字符串的每个字符重新组合排列python排列组合的数学运算(递归法)

    1.数学知识温习 全排列的公式为: Anm:A _n^m : Anm​: 以 " AABBCC " 为例,全排列的公式有: A66=6!:A _6^6 = 6! : A66​=6! ...

  9. python求一个数的阶乘_阶乘计算python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 问题本身很简单,主要是通过这个小问题来演示python的一些用法,例如测试代码运 ...

最新文章

  1. 大工18秋《计算机网络技术》在线作业1,大工18秋《专业英语(计算机英语)》在线作业3【标准答案】...
  2. python3.5怎么安装pip-在python3.5中使用pip
  3. LINUX内核分析第四周——扒开系统调用的三层皮
  4. 监管升级,央行变相加息,贷款难还在继续
  5. ajax默认什么方法,ajax设置默认值ajaxSetup()方法
  6. 965. 单值二叉树
  7. react(84)--多张图片
  8. 在dotnetnuke中去掉显示姓名中的空格
  9. django 博客一
  10. 史上最详细的宝塔部署java项目流程
  11. 01_LBP算法原理
  12. 【sketchup 2021】草图大师图像输出与渲染之Enscape渲染(优秀的实时渲染软件)的安装与软件说明,并在sketchup软件中调出Enscape软件和使用。
  13. 多多云手机多少钱一月_多多云手机一机分身千变万化 高亢性能体验更加流畅...
  14. office2007无法卸载 无法安装
  15. 异步时钟脉冲同步器的设计
  16. JAVA将aaa=aaa1ccc=ccc3的格式请求参数转Map
  17. Vo Mic|旧手机不要扔,一招秒变无线麦克风
  18. 计算机第一次月考试题,计算机基础第一次月考试题.doc
  19. 什么时候,董明珠能成功卖给记者一部格力手机?
  20. keras tensorboard的使用

热门文章

  1. 用etcd实现比Redis更安全的分布式锁
  2. Kubernetes群集的零停机服务器更新
  3. Spring Security:基于内存的认证信息
  4. 使用powershell 执行脚本,windows默认不允许任何脚本运行
  5. 第103天:CSS3中Flex布局(伸缩布局)详解
  6. 如何在Linux上使用netstat命令查证DDOS***
  7. 基于redis实现分布式锁思考
  8. java打印日期序列,Java GSON-日期格式
  9. realme x2 深度测试打不开_realme 的产品到底是不是贴牌的?
  10. mysql启动redis_docker一系列mysql,redis,centos啥的启动参数记个笔记