给定 n 个非负整数表示高程图,其中每个条的宽度为 1,计算下雨后它可以收集多少水。
示例: 输入:高度 = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 说明:上面的高程图(黑色部分)用数组[0,1,0,2,1,0,1,3,2,1,2,1]表示。在这种情况下,有 6 个单位的雨水(蓝色部分)被困。
**Constraints**:
n == height.length
0 <= n <= 3 * 104
0 <= height[i] <= 105
这个问题是它在输入为 [2,0,2] 时输出 0 但代码应该将索引 1 设置为 leftMax 为 2 和 rightMax 为 2 所以 2-0=2应该是输出
class Solution {
public int trap(int[] height) {
if(height == null || height.length == 0){
return 0;
}
int ans = 0;
int size = height.length;
int[] leftMax = new int[size];
int[] rightMax = new int[size];
leftMax[0] = height[0];
for(int i = 1; i < size; i++){
leftMax[i] = Math.max(leftMax[i-1],height[i]);
}
rightMax[0] = height[size-1];
for(int i = size-2; i >= 0; i--){
rightMax[i] = Math.max(rightMax[i+1],height[i]);
}
for(int i = 1; i < size-1; i++){
ans+= Math.min(leftMax[i],rightMax[i])-height[i];
}
return ans;
}
}
答案 0 :(得分:1)
问题是你的 @GetMapping(path = "test")
public Single<String> test() throws Exception {
final Mono<ContextView> contextMono = Mono.deferContextual(Mono::just);
return RxJava3Adapter.monoToSingle(
contextMono.flatMap(ctx -> Mono.just(ctx.get("my-context"))));
}
初始化是错误的,它在“错误的一边”初始化。它初始化可能从 rightMax
部分复制的 [0]
。但是 leftMax 然后从左边迭代, rightMax 从右边迭代,因此最右边的索引应该被初始化。请注意,您已经使用正确的 leftMax
索引进行了初始化,但是对于错误的 rightMax - 它应该如下所示:
height
这在以前是有效的,因为非常正确的(可能)不是集水器的一部分,因此它的错误值没有任何影响。但在非常简单的 2,0,2 情况下,它是陷阱的一部分,并且弄乱了结果。
现在代码正确地计算了两个给定的样本:
rightMax[size-1] = height[size-1]
答案 1 :(得分:0)
您第一次从顶峰到背面进行实验并购买最高塔 here 的费用,这是您在完成每一行时尚未遇到的。