Произведение значений List
Дан массив nums из n целых чисел, где n> 1, вернуть выходной массив такой, что output [i] равен произведению всех элементов nums, кроме nums [i].
на вход :
nums - массив integers
на выход: массив integers
nums = [3, 5, 1, 4] getResult( nums ) --> [20, 12, 60, 15]
public static List<Integer> getResult(List<Integer> nums) {
int num = 0;
for (int i = 1; i < nums.size() ; i++){
if(nums!=1){
int a = nums.get(i)* nums.get(i+1);
num+=a;
}
}
return num;
}
public static void runCode() {
getResult(nums);
}
}
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Потренируйтесь со Stream Api. Получится без в функциональном стиле желаемый результат
public static void main(String[] args) {
List<Integer> nums = new ArrayList<>();
nums.add(3);
nums.add(5);
nums.add(1);
nums.add(4);
Integer product = nums.stream().reduce(1, (item, accumulator) -> accumulator * item);
List<Integer> result = nums.stream().map(item -> product / item).collect(Collectors.toList());
result.stream().forEach(System.out::println);
}
Updated.
public static List<Integer> getResult(List<Integer> nums) {
List<Integer> result = new ArrayList();
int num = 1;
for (int i = 0; i < nums.size() ; i++}
num*=nums.get(i);
}
for (int i = 0; i < nums.size() ; i++}
result.add(num/nums.get(i));
}
return result;
}
public static void runCode() {
List<Integer> result = getResult(nums);
}
}