1. 0707. 设计链表
要求:设计实现一个链表,需要支持以下操作:
get(index)
:获取链表中第index
个节点的值。如果索引无效,则返回-1
。addAtHead(val)
:在链表的第一个元素之前添加一个值为val
的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val)
:将值为val
的节点追加到链表的最后一个元素。addAtIndex(index, val)
:在链表中的第index
个节点之前添加值为val
的节点。如果index
等于链表的长度,则该节点将附加到链表的末尾。如果index
大于链表长度,则不会插入节点。如果index
小于0
,则在头部插入节点。deleteAtIndex(index)
:如果索引index
有效,则删除链表中的第index
个节点。
说明:
- 所有
val
值都在$[1, 1000]$ 之内。 - 操作次数将在
$[1, 1000]$ 之内。 - 请不要使用内置的
LinkedList
库。
示例:
MyLinkedList linkedList = new MyLinkedList();
linkedList.addAtHead(1);
linkedList.addAtTail(3);
linkedList.addAtIndex(1,2); // 链表变为 1 -> 2 -> 3
linkedList.get(1); // 返回 2
linkedList.deleteAtIndex(1); // 现在链表是 1-> 3
linkedList.get(1); // 返回 3
2. 0206. 反转链表
描述:给定一个单链表的头节点 head
。
要求:将该单链表进行反转。可以迭代或递归地反转链表。
说明:
- 链表中节点的数目范围是
$[0, 5000]$ 。 -
$-5000 \le Node.val \le 5000$ 。
示例:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
解释
翻转前 1->2->3->4->5->NULL
反转后 5->4->3->2->1->NULL
3. 0203. 移除链表元素
描述:给定一个链表的头节点 head
和一个值 val
。
要求:删除链表中值为 val
的节点,并返回新的链表头节点。
说明:
- 列表中的节点数目在范围
$[0, 10^4]$ 内。 -
$1 \le Node.val \le 50$ 。 -
$0 \le val \le 50$ 。
示例:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
输入:head = [], val = 1
输出:[]
- 「0707. 设计链表」习题解析:网页链接、Github 链接
- 「0206. 反转链表」习题解析:网页链接、Github 链接
- 「0203. 移除链表元素」习题解析:网页链接、Github 链接