Salut
Am si eu o problema de rezolvat si nu reusesc sa ajung ii dau de cap. Problema am primit-o in cadrul unui interviu de angajare ca proba tehnica. Nu am reusit sa o rezolv atunci pe loc, dar totusi as vrea sa aflu rezolvarea.
Cerinta:
Ți se dă un Array ce contine un șir de numere întregi, nu conteaza ordinea numerelor, deci pot fi random. Trebuie creezi o metoda ce returneza un Array cu suma a N elemente cate N. imi pare rau daca explicatia este vaga.
Date de intrare:
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8};
Date iesire:
int[] result = {3, 5, 7, 9, 11, 13, 15}; // pentru suma a 2 cate 2 numere
int[] result = {6, 9, 12, 15, 18, 21}; // pentru suma a 3 cate 3 numere
int[] result = {10, 14, 18, 22, 26}; // pentru suma a 4 cate 4 numere
Iar aici este incercarea de rezolvare a mea:
public static void main(String[] args) {
int[] input = {1, 2, 3, 4, 5, 6, 7, 8}; // size = 8
int[] output1 = sumOfNumbers_v1(input, 2);
int[] output2 = sumOfNumbers_v2(input, 3);
Arrays.stream(output1).forEach(x -> System.out.println(x));
Arrays.stream(output2).forEach(x -> System.out.println(x));
}
public static int[] sumOfNumbers_v1(int[] initial, int count) {
int[] finalArray = new int[(initial.length + 1) - count];
for(int i = 0; i < initialArray.length; i++) {
int sum = 0;
int k = i;
for(int j = 0; j < count; j++){
sum += initialArray[k];
k++;
}
System.out.println(sum);
finalArray[i] = sum;
}
return finalArray;
}
public static int[] sumOfNumbers_v2(int[] initial, int count) {
int[] finalArray = new int[(initial.length + 1) - count];
for(int i = 0; i < initial.length; i++) {
int sum = 0;
for(int j = i; j < count + i; j++){
sum += initial[j];
}
System.out.println(sum);
finalArray[i] = sum;
}
return finalArray;
}
Ambele metode au un flaw, si anume ca arunca o exceptia: java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 8
Daca ma puteti ajuta cu cateva sfaturi, as aprecia maxim.