描述:
凹凸不平的地面每当下雨的时候总会积水。假设地面是一维的,每一块宽度都为1,高度是非负整数,那么可以用一个数组来表达一块地面。例如[0,1,0,2,1,0,1,3,2,1,2,1]可以用来表示下图地面:
Java代码实现如下:
public class MyTest2 {
private static int[]
array = new int[] { 0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1 };
private static int mount
= 0;
public static void
main(String[] args) {
// 总层数
int top = 0;
// 当前层
int level = 0;
// 是否存在左墙
boolean haveLeft = false;
// 单层累加
int subMount = 0;
// 一层一层计算
while (true) {
for (int
val : array) {
if (level == 0) {
// 第一次循环需要计算总层数
if (val > top) {
top =
val;
}
}
if (haveLeft) {
if (val <= level) {
subMount++;
} else {
//
发现右墙,那么结算
mount =
mount + subMount;
subMount =
0;
}
} else {
haveLeft = val > level;
}
}
//
达到最顶层那么跳出循环
level++;
if (level
== top) {
break;
}
//
计算下一层,那么单层累加需要清空,左墙也需要清空
subMount =
0;
haveLeft =
false;
}
System.out.println(mount);
}
}
加载中,请稍候......