Skip to content

Latest commit

 

History

History
88 lines (58 loc) · 3.28 KB

02.01.02-Exercises.md

File metadata and controls

88 lines (58 loc) · 3.28 KB

02.01.02 练习题目(第 01 天)

1.1 题目大意

要求:设计实现一个链表,需要支持以下操作:

  • 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.1 题目大意

描述:给定一个单链表的头节点 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.1 题目大意

描述:给定一个链表的头节点 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
输出:[]

习题解析

  1. 0707. 设计链表」习题解析:网页链接Github 链接
  2. 0206. 反转链表」习题解析:网页链接Github 链接
  3. 0203. 移除链表元素」习题解析:网页链接Github 链接