В вопросе предлагается написать статический метод sumNeighbours, который принимает массив целых чисел в качестве аргумента и возвращает массив с тем же числом элементов, что и исходный массив, так что каждое целое число в новом массиве является суммой его соседей и самого себя. в исходном массиве.
например.
[10, 20, 30, 40]
будет
[30, 60, 90, 70]
30(10+20) 60(20+10+30) 90(30+20+40) 70(40+30)
Спасибо. Вот код, который я сделал, и он работает, НО только для НЕКОТОРЫХ случаев, а не ВСЕХ. Кто-нибудь может порекомендовать более эффективный способ подойти к этому? Без жесткого кодирования всех тех, если и для некоторых случаев.
public static int[] sumNeighbours(int[] values) {
int[] list = new int[values.length];
for (int i=0; i<values.length; i++) {
if (values.length > 1) {
if (values[i] == values[0]) {
list[i] = values[i] + values[i+1];
}
else if (values[i] == values[values.length-1]) {
list[i] = values[i] + values[i-1];
}
else {
list[i] = values[i] + values[i-1] + values[i+1];
}
}
else {
list [i] = values[i];
}
}
return list;
}