简单

https://leetcode-cn.com/problems/reverse-linked-list/

反转整条链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

思路:

套用2021年5月6日中困难实现的任意位置链表反转


中等

https://leetcode-cn.com/problems/implement-trie-prefix-tree/

208. 实现 Trie (前缀树)

Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
请你实现 Trie 类:

  1. Trie() 初始化前缀树对象。
  2. void insert(String word) 向前缀树中插入字符串 word 。
  3. boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。
  4. boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false 。

    思路:

    了解前缀树

Trie,又称前缀树或字典树,是一棵有根树,其每个节点包含以下

字段:

指向子节点的指针数组 children。每个指向下个节点边和一个字符对应
布尔字段 isEnd,表示该节点是否为字符串的结尾。

插入字符串:

我们从字典树的根开始,插入字符串。对于当前字符对应的子节点,有两种情况:

  • 子节点存在。沿着指针移动到子节点,继续处理下一个字符。
  • 子节点不存在。创建一个新的子节点,记录在 children 数组的对应位置上,然后沿着指针移动到子节点,继续搜索下一个字符。

重复以上步骤,直到处理字符串的最后一个字符,然后将当前节点标记为字符串的结尾。

查找前缀:

我们从字典树的根开始,查找前缀。对于当前字符对应的子节点,有两种情况:

  • 子节点存在。沿着指针移动到子节点,继续搜索下一个字符。
  • 子节点不存在。说明字典树中不包含该前缀,返回空指针。

重复以上步骤,直到返回空指针或搜索完前缀的最后一个字符。
若搜索到了前缀的末尾,就说明字典树中存在该前缀。此外,若前缀末尾对应节点的 isEnd 为真,则说明字典树中存在该字符串。

image.png
上图实点是end记号,则这棵树有单词 abc、abcd、b、bcd、efg、hii


困难

42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:
2021年5月7日 - 图2
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

示例 2:
输入:height = [4,2,0,3,2,5]
输出:9

思路

对于一个高度,两个高于这个高度的点之间是有水的,
简单(不能用的)思路:

  1. 得到最高值,最低值
  2. 两个极值之间,进行高度遍历
  3. 求得比当前高度高的点的位置,每个点之间有水记录

代码

[https://gitee.com/graywolf_lv/daily_leetcode/tree/2021%2F5%2F7/

](https://gitee.com/graywolf_lv/daily_leetcode/tree/2021%2F5%2F7/)