体积超过顶级阵列

时间:2017-01-19 05:43:35

标签: java arrays

  

给定一组表示地形高度的正整数(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.
    }
}

这是怎么回事?我不明白这个问题。

1 个答案:

答案 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]