大家好呀,我是蛋蛋。
今天来设计链表,强行学明白链表的 5 种操作。
板凳摆好,直接开整。
LeetCode 107:设计链表
题意
实现链表的查找、头插法、尾插法、通用插入、删除操作:
- get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
- addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
- addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
- addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
- deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。
示例
提示
- 1 <= val <= 1000
- 1 <= 操作次数 <= 1000
- 不能使用内置的 LinkedList 库
题目解析
水题,难度中等,考察链表的常规操作。
如果对链表还不太熟悉,请看下面这篇文章:
仔细来看,这道题主要涉及 5 种操作:
- 查找链表第 index 个节点的值
- 在链表的第一个节点前插入一个节点
- 在链表的最后一个节点后插入一个节点
- 在链表的第 index 节点前插入一个节点
- 删除链表的第 index 个节点。
这 5 种包含了链表的常见增删查操作,是刚学完链表的臭宝们及时巩固知识的绝佳练习题。</