32. 岛屿的个数
题目
解析
同 733. 图像渲染
代码
DFS
1 | void dfs(vector<vector<char>>& grid, int x, int y) |
BFS
RE?
1 | int numIslands(vector<vector<char>>& grid) { |
同 733. 图像渲染
1 | void dfs(vector<vector<char>>& grid, int x, int y) |
RE?
1 | int numIslands(vector<vector<char>>& grid) { |
vector<int> f 中,并且 vector<int> g 保存:两行中,上面一行与下面相邻两个元素相加之和的最小数组[4, 1, 8, 3] [0, 0, 0, 0][7, 6, 10, 0][7, 6, 10, 0]Note
- 如果不懂,就自己调试一下吧
- 这里是动态规划,更新的是g和f(首先更新g,接着将g赋值给f)
- 其中f,总是为最后一行最小数的数组:
- 比如:一开始为
[4, 1, 8, 3],后来状态转移为:[7, 6, 10, 0]- 那么
[7, 6, 10, 0]可以看成最后一行(替换后面两行,依次类推)
1 | int minimumTotal(vector<vector<int> > &triangle) |
1 | int minimumTotal(vector<vector<int>>& triangle) { |
Note
- 相比于上面的代码,下面的代码删除了
g- 原因:因为
f[j]改变,对f[j + 1]并没有影响,所以就不需要g了。
1 | int numSquares(int n) { |
1. BFS(宽度有限搜索)
2. DFS(深度有限搜索)
寻找最小的优势 (最小性)10万 层时就会RE1 | int minDepth(TreeNode* root) { |
1 0 1 00 1的个数有关1 | int totalHammingDistance(vector<int>& nums) { |
出现过一次元素的异或和列表中只有一个出现一次的数字,其余的出现两次这个问题了1 | vector<int> singleNumber(vector<int>& nums) { |
1 | vector<int> singleNumber(vector<int>& nums) { |
位运算的知识点以及常用技巧