mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Update
This commit is contained in:
@ -165,18 +165,15 @@ Java:
|
|||||||
```java
|
```java
|
||||||
class Solution {
|
class Solution {
|
||||||
public int removeElement(int[] nums, int val) {
|
public int removeElement(int[] nums, int val) {
|
||||||
|
|
||||||
// 快慢指针
|
// 快慢指针
|
||||||
int fastIndex = 0;
|
int slowIndex = 0;
|
||||||
int slowIndex;
|
for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {
|
||||||
for (slowIndex = 0; fastIndex < nums.length; fastIndex++) {
|
|
||||||
if (nums[fastIndex] != val) {
|
if (nums[fastIndex] != val) {
|
||||||
nums[slowIndex] = nums[fastIndex];
|
nums[slowIndex] = nums[fastIndex];
|
||||||
slowIndex++;
|
slowIndex++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return slowIndex;
|
return slowIndex;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -65,6 +65,8 @@
|
|||||||
|
|
||||||
# 思路
|
# 思路
|
||||||
|
|
||||||
|
《代码随想录》算法视频公开课:[栈的最后表演! | LeetCode:150. 逆波兰表达式求值](https://www.bilibili.com/video/BV1kd4y1o7on),相信结合视频在看本篇题解,更有助于大家对本题的理解。
|
||||||
|
|
||||||
在上一篇文章中[1047.删除字符串中的所有相邻重复项](https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html)提到了 递归就是用栈来实现的。
|
在上一篇文章中[1047.删除字符串中的所有相邻重复项](https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html)提到了 递归就是用栈来实现的。
|
||||||
|
|
||||||
所以**栈与递归之间在某种程度上是可以转换的!** 这一点我们在后续讲解二叉树的时候,会更详细的讲解到。
|
所以**栈与递归之间在某种程度上是可以转换的!** 这一点我们在后续讲解二叉树的时候,会更详细的讲解到。
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
|
|
||||||
# 思路
|
# 思路
|
||||||
|
|
||||||
|
《代码随想录》算法视频公开课:[单调队列正式登场!| LeetCode:239. 滑动窗口最大值](https://www.bilibili.com/video/BV1XS4y1p7qj),相信结合视频在看本篇题解,更有助于大家对本题的理解。
|
||||||
|
|
||||||
这是使用单调队列的经典题目。
|
这是使用单调队列的经典题目。
|
||||||
|
|
||||||
难点是如何求一个区间里的最大值呢? (这好像是废话),暴力一下不就得了。
|
难点是如何求一个区间里的最大值呢? (这好像是废话),暴力一下不就得了。
|
||||||
|
@ -16,6 +16,17 @@
|
|||||||
|
|
||||||
# 思路
|
# 思路
|
||||||
|
|
||||||
|
这道题目也是 dfs bfs基础类题目。
|
||||||
|
|
||||||
|
|
||||||
|
## DFS
|
||||||
|
|
||||||
|
很多同学,写dfs其实也是凭感觉来,有的时候dfs函数中写终止条件才能过,有的时候 dfs函数不写终止添加也能过!
|
||||||
|
|
||||||
|
这里其实涉及到dfs的两种写法,
|
||||||
|
|
||||||
|
以下代码使用dfs实现,如果对dfs不太了解的话,建议先看这篇题解:[797.所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/solution/by-carlsun-2-66pf/),
|
||||||
|
|
||||||
写法一,dfs只处理下一个节点
|
写法一,dfs只处理下一个节点
|
||||||
```CPP
|
```CPP
|
||||||
class Solution {
|
class Solution {
|
||||||
@ -94,3 +105,55 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
以上两种写法的区别,我在题解: [DFS,BDF 你没注意的细节都给你列出来了!LeetCode:200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/solution/by-carlsun-2-n72a/)做了详细介绍。
|
||||||
|
|
||||||
|
## BFS
|
||||||
|
|
||||||
|
```CPP
|
||||||
|
class Solution {
|
||||||
|
private:
|
||||||
|
int count;
|
||||||
|
int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1}; // 四个方向
|
||||||
|
void bfs(vector<vector<int>>& grid, vector<vector<bool>>& visited, int x, int y) {
|
||||||
|
queue<int> que;
|
||||||
|
que.push(x);
|
||||||
|
que.push(y);
|
||||||
|
visited[x][y] = true; // 加入队列就意味节点是陆地可到达的点
|
||||||
|
count++;
|
||||||
|
while(!que.empty()) {
|
||||||
|
int xx = que.front();que.pop();
|
||||||
|
int yy = que.front();que.pop();
|
||||||
|
for (int i = 0 ;i < 4; i++) {
|
||||||
|
int nextx = xx + dir[i][0];
|
||||||
|
int nexty = yy + dir[i][1];
|
||||||
|
if (nextx < 0 || nextx >= grid.size() || nexty < 0 || nexty >= grid[0].size()) continue; // 越界
|
||||||
|
if (!visited[nextx][nexty] && grid[nextx][nexty] == 1) { // 节点没有被访问过且是陆地
|
||||||
|
visited[nextx][nexty] = true;
|
||||||
|
count++;
|
||||||
|
que.push(nextx);
|
||||||
|
que.push(nexty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
int maxAreaOfIsland(vector<vector<int>>& grid) {
|
||||||
|
int n = grid.size(), m = grid[0].size();
|
||||||
|
vector<vector<bool>> visited = vector<vector<bool>>(n, vector<bool>(m, false));
|
||||||
|
int result = 0;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
for (int j = 0; j < m; j++) {
|
||||||
|
if (!visited[i][j] && grid[i][j] == 1) {
|
||||||
|
count = 0;
|
||||||
|
bfs(grid, visited, i, j); // 将与其链接的陆地都标记上 true
|
||||||
|
result = max(result, count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user