理解列表[i-1] vs list [i] -1

时间:2014-06-08 21:11:38

标签: java arrays list variables

希望这是一个简单的答案,我只是无法理解。完整代码是

public static void mystery(int[] list) {
       for( int i = list.length - 1; i>1; i --) {
           if (list[i] > list[i - 1]) {
               list[i -1] = list[i] - 2;
               list[i]++;
            }
    }
}
}

and lets say we are using a list of [2,3,4].

我知道它会输出2,2,5,但我不清楚如何实际完成它。我知道list.length在这里是3,我知道for循环只会运行一次,但我很清楚列表中发生了什么[i - 1] = list [i] - 2;区域。它应该是列表[2-1] =列表[2] - 2吗?如何将两者置于括号之外会对其产生不同的影响?

非常感谢。

1 个答案:

答案 0 :(得分:0)

代码很简单:

if (list[i] > list[i - 1]) 

上面的行比较了列表中的当前元素(说实话,它是一个数组,而不是列表,但让我们坚持你的命名约定)与前一个元素。考虑你的样本输入,它比较4>3如果它大于前一个元素(并且它是),它从前一个元素中减去2,并将1加到当前元素。

list[i -1] = list[i] - 2; // list[2-1]=4-2     ->  list[1]=2
list[i]++;  //list[2]=list[2]+1                ->  list[2]= 4+1 = 5 

在第一次迭代之后,您可以说最后一个数字是5而最后一个数字是2.下一次迭代检查条件2>2。它是假的,没有任何变化,因此结果数组[2,2,5]。

请注意,循环从列表的末尾开始到开头!