mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
添加0042.接雨水java动态规划解法
This commit is contained in:
@ -365,6 +365,7 @@ public:
|
|||||||
## 其他语言版本
|
## 其他语言版本
|
||||||
|
|
||||||
Java:
|
Java:
|
||||||
|
|
||||||
双指针法
|
双指针法
|
||||||
```java
|
```java
|
||||||
class Solution {
|
class Solution {
|
||||||
@ -390,6 +391,33 @@ class Solution {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
动态规划法
|
||||||
|
```java
|
||||||
|
class Solution {
|
||||||
|
public int trap(int[] height) {
|
||||||
|
int length = height.length;
|
||||||
|
if (length <= 2) return 0;
|
||||||
|
int[] maxLeft = new int[length];
|
||||||
|
int[] maxRight = new int[length];
|
||||||
|
|
||||||
|
// 记录每个柱子左边柱子最大高度
|
||||||
|
maxLeft[0] = height[0];
|
||||||
|
for (int i = 1; i< length; i++) maxLeft[i] = Math.max(height[i], maxLeft[i-1]);
|
||||||
|
|
||||||
|
// 记录每个柱子右边柱子最大高度
|
||||||
|
maxRight[length - 1] = height[length - 1];
|
||||||
|
for(int i = length - 2; i >= 0; i--) maxRight[i] = Math.max(height[i], maxRight[i+1]);
|
||||||
|
|
||||||
|
// 求和
|
||||||
|
int sum = 0;
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
int count = Math.min(maxLeft[i], maxRight[i]) - height[i];
|
||||||
|
if (count > 0) sum += count;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
Python:
|
Python:
|
||||||
|
|
||||||
双指针法
|
双指针法
|
||||||
|
Reference in New Issue
Block a user