200. 岛屿数量
代码细节
- dfs(i,j)表示我在grid[i][j]所在的岛屿上插旗子
- 2层for循环,可以使dfs(i,j)遍历每个岛屿
易错
这个grid是char型’1‘不是int 1
代码
994. 腐烂的橘子
这题难
代码细节
- 数组q用来存这一层的烂橘子。数组nxt用来存下一层的烂橘子。
- 既然我们是借助两个数组来实现这个操作的,那么我就应该把注意力放到2个数组上。2个数组的插入和弹出(在数组中是查询)
代码
207. 课程表
爆破猪的思路比灵神简单好多啊
拓扑排序
这个题的代码看起来很复杂,但是我脑海里有这个拓扑图,邻接表就非常好写。
细节
- 把prerequisites中(想学课程-前置课程)的信息填到入度数组,【前置课程-想学课程】二维数组(必须按这个顺序,前置课程在拓扑图的最左边)中。
- 入度数组
vector<int> inDegree(numCourses, 0);,因为prerequisites中一共有numCourses节课。把每个课的入度都记录在这个数组中。在prerequisites中每有一个想学的课,inDegree[想学的课]++,因为想学的课才会有入度,前置的课是出度。
3.前置课程-想学课程二维数组vector<vector<int>> adj(numCourses);。只有numCourses个课。
代码
208. 实现 Trie (前缀树)
细节
前缀树的结构体。其中有一个是指针数组。数组中全是指针。我们做题就是要沿着这些指针一次一次迭代。
访问指针数组的操作我还很陌生,第一次用:
node指针访问它的第0号数组,看其中是不是存储的空指针。也是看前缀树中的值和word是否相等的。
if(node->next[c-'a']==nullptr)- node迭代成它的下一个指针数组中装的指针。
node=node->next[c-'a'];迭代
就是利用for循环推进,指针改变指向
代码
最重要的2段代码。迭代+判断是否相等