给定一组表示地形高度的正整数(2-d,ala Super Mario))和表示平坦海平面的整数,返回表示每个独特水体体积的整数容器。
请不要为我解决整个问题!
我有几个问题:
让我们先举一个例子。
int [] arr = {4, 3, 5, 6, 4, 2};
int sea_level = 4;
它的设置方式如下:
6
5 6
4 5 6 4 2
4 3 5 6 4 2
4 3 5 6 4 2
4 3 5 6 4 2
问所以我们不能越过4对吗?
所以我们有范围,[4,3]和[4,2](在[5,6]范围之后)。
但我如何计算音量?
Arraylist<Integer> list = new Arraylist<>();
int volume = 0;
for(int i = 0; i < arr.length; i++){
if(arr[i] <= sea_level){
volume += arr[i];
} else{
list.add(volume); //volume for one block, then reset down.
volume = 0; //loop starts with the next one.
}
}
这是怎么回事?我不明白这个问题。
答案 0 :(得分:1)
鉴于你的例子:
6
5 6 5
4 5 6 5
4 3 5 6 5
4 3 5 6 2 5
4 3 5 6 2 1 5
水线为4,所以:
6
5 6 5
~~~~~~~~~~~~5
4 5 6 5
4 3 5 6 5
4 3 5 6 2 5
4 3 5 6 2 1 5
这使水体积成为水线下方的洞,或者:
6
5 6 5
~~~~~~~~~~~~5
4 W 5 6 W W 5
4 3 5 6 W W 5
4 3 5 6 2 W 5
4 3 5 6 2 1 5
或1立方水,然后5立方水。
现在,你如何计算......你需要音量。 在水线(4)和地形高度之间测量体积...... 所以要测量音量:sea_level - a [i]