更新 单调栈系列题目 排版格式修复
This commit is contained in:
@@ -29,7 +29,7 @@
|
||||
* 输出:9
|
||||
|
||||
|
||||
# 思路
|
||||
## 思路
|
||||
|
||||
接雨水问题在面试中还是常见题目的,有必要好好讲一讲。
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
* 动态规划
|
||||
* 单调栈
|
||||
|
||||
## 暴力解法
|
||||
### 暴力解法
|
||||
|
||||
本题暴力解法也是也是使用双指针。
|
||||
|
||||
@@ -137,7 +137,7 @@ public:
|
||||
|
||||
力扣后面修改了后台测试数据,所以以上暴力解法超时了。
|
||||
|
||||
## 双指针优化
|
||||
### 双指针优化
|
||||
|
||||
|
||||
在暴力解法中,我们可以看到只要记录左边柱子的最高高度 和 右边柱子的最高高度,就可以计算当前位置的雨水面积,这就是通过列来计算。
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
## 单调栈解法
|
||||
### 单调栈解法
|
||||
|
||||
关于单调栈的理论基础,单调栈适合解决什么问题,单调栈的工作过程,大家可以先看这题讲解 [739. 每日温度](https://programmercarl.com/0739.每日温度.html)。
|
||||
|
||||
@@ -194,7 +194,7 @@ public:
|
||||
|
||||
而接雨水这道题目,我们正需要寻找一个元素,右边最大元素以及左边最大元素,来计算雨水面积。
|
||||
|
||||
### 准备工作
|
||||
#### 准备工作
|
||||
|
||||
那么本题使用单调栈有如下几个问题:
|
||||
|
||||
@@ -248,7 +248,7 @@ stack<int> st; // 存着下标,计算的时候用下标对应的柱子高度
|
||||
|
||||
明确了如上几点,我们再来看处理逻辑。
|
||||
|
||||
### 单调栈处理逻辑
|
||||
#### 单调栈处理逻辑
|
||||
|
||||
以下操作过程其实和 [739. 每日温度](https://programmercarl.com/0739.每日温度.html) 也是一样的,建议先做 [739. 每日温度](https://programmercarl.com/0739.每日温度.html)。
|
||||
|
||||
@@ -596,7 +596,7 @@ class Solution:
|
||||
|
||||
```
|
||||
|
||||
### Go
|
||||
### Go:
|
||||
|
||||
```go
|
||||
func trap(height []int) int {
|
||||
@@ -802,7 +802,7 @@ var trap = function(height) {
|
||||
};
|
||||
```
|
||||
|
||||
### TypeScript
|
||||
### TypeScript:
|
||||
|
||||
暴力解法:
|
||||
|
||||
@@ -925,8 +925,7 @@ int trap(int* height, int heightSize) {
|
||||
* 时间复杂度 O(n)
|
||||
* 空间复杂度 O(1)
|
||||
|
||||
|
||||
Rust
|
||||
### Rust:
|
||||
|
||||
双指针
|
||||
|
||||
@@ -980,3 +979,4 @@ impl Solution {
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
</a>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user