Condense Array to Number - Tech Fundamentals with Java and PHP
Condense Array to Number
Write a program to read an array of integers and condense them by summing adjacent couples of elements until a
single integer is obtained. For example, if we have 3 elements {2, 10, 3}, we sum the first two and the second two
elements and obtain {2+10, 10+3} = {12, 13}, then we sum again all adjacent elements and obtain {12+13} = {25}.
Examples:
---------------------
Input: 2 10 3
Output: 25
Comments:2 10 3 -> 2+10 10+3 -> 12 13 -> 12 + 13 -> 25
---------------------
Input: 5 0 4 1 2
Output: 35
Comments: 5 0 4 1 2 -> 5+0 0+4 4+1 1+2 ->5 4 5 3 ->5+4 4+5 5+3 ->9 9 8 ->9+9 9+8 ->18 17 ->18+17 ->35
---------------------
Input: 1
Output: 1
Comments: 1 is already condensed to number
------------------------------------------------------------------
Здравейте,
бих искал малко помощ как да си оправя алгоритъма в задачата да работи напълно, понеже първия и третия примерни тестове работят, а втория - не.
Линк с решението ми: https://pastebin.com/QRGvTaaC
Благодаря, за подробния отговор!
Нужно ни е да намаляваме дължината на масива всеки път с 1, защото след всяка итерация елементите на новия масив намаляват с един.
input = condensed кара input[] да сочи към condensed[] в паметта и така input.length става с 1 по-малко всеки път, докато не стане = 2, при което condensed.length = 1 и цикълът прекъсва, понеже ни е нужно само едно число за изход.
А condensed[input.length - 1], понеже при всяка итерация от събирания елементите на новия масив намаляват с един, докато не остане само един елемент, който да се отпечата на изхода. Затова и не ти е нужна проверка, ако входът е само от едно число.
Не знам този код как работи на Java , но на PHP не работи. По простата причина, че
condensed.length = 1
и въртиш цикъла до 1, вместо до 2. Следователо се извършва събирането за първите две числа. Би трябвало да е:
i < input.length - 1