У нас есть массив высот, представляющих высоту вдоль пешеходного маршрута. С учетом индексов start
/ end
в массиве вернуть сумму изменений для обхода, начиная с индекса start
и заканчивая индексом end
. Например, с высотами {5, 3, 6, 7, 2}
и start=2
, end=4
дает сумму 1 + 5 = 6
. И начальный, и конечный индексы будут действительными индексами в массиве с start <= end
.
sumHeights({5, 3, 6, 7, 2}, 2, 4) => 6
sumHeights({5, 3, 6, 7, 2}, 0, 1) => 2
sumHeights({5, 3, 6, 7, 2}, 0, 4) => 11
Я изо всех сил пытаюсь понять это правильно, я попробовал часть этого, но я запутался, и я получаю ArrayIndexOutOfBoundsException
.
public int sumHeights(int[] heights, int start, int end) {
int total =0;
int difference =0;
for(int i=start;i<=end;i++){
if(heights[i] > heights[i++]){
difference =heights[i] - heights[i++];
}else if(heights[i++] > heights[i]){
difference =heights[i++] - heights[i];
}
total+=difference;
}
return total;
}