有一组不同高度的台阶,由一个整数数组表示,数组中每个数是台阶的高度。当开始下雨了(足够多),台阶之间的水坑会积多少水呢?
如下图,可以表示为数组[0,1,0,2,1,0,1,3,2,1,2,1],返回积水量6。
分別計算每一層的凹的個數
@Test
public void test3() {
int[] array = new int[]{0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1, 0, 4};
int total = 0;
int c = 0;
while (true) {
int min = -1;
for (int i = 0; i < array.length; i++) {
if (array[i] - c > 0) {
if (min > 0) {
total += i - min - 1;
}
min = i;
}
}
if (min < 0) {
break;
}
c++;
}
JLogger.debug(total + "");
}