再遇接雨水
Posted 韩旭051
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再遇接雨水相关的知识,希望对你有一定的参考价值。
又是经典的 接雨水
看到 这个答案 我就没有 搞懂 为什么要这么 写
会不会 超了 这样
import java.util.*;
public class Solution {
//以 3 1 2 5 2 4 为例
//从左向右扫描,遇到比第一个数大的则构成一个桶,计算盛多少水
//然后再从右向左扫描一遍
public long maxWater (int[] arr) {
if (arr == null || arr.length == 0) {
return 0;
}
int low = 0;
long sum = 0;
long tmp = 0;
//从左向右
for (int i = 0; i < arr.length; i++) {
if (arr[low] > arr[i]) {
tmp = tmp + arr[low] - arr[i];
}
if (arr[low] <= arr[i]) {
sum = sum + tmp;
tmp = 0;
low = i;
}
}
low = arr.length-1;
tmp = 0;
//从右向左
for (int j = arr.length-1; j >= 0; j--) {
if (arr[low] > arr[j]) {
tmp = tmp + arr[low] - arr[j];
}
//注意这里不能再 <=,否则可能会重复计算等于的情况
if (arr[low] < arr[j]) {
sum = sum + tmp;
tmp = 0;
low = j;
}
}
return sum;
}
}
直到 我在 LeetCode 看到这个 图片 秒懂
以上是关于再遇接雨水的主要内容,如果未能解决你的问题,请参考以下文章