gpt4 book ai didi

arrays - 在 Java 8 中迭代 Java 数组

转载 作者:行者123 更新时间:2023-12-03 01:43:00 28 4
gpt4 key购买 nike

这是一个简单的算法问题,

Given an array of n integers where n > 1, nums, return an array output such that output[i] is equal to the product of all the elements of nums except nums[i]. Solve it without division and in O(n). For example, given [1,2,3,4], return [24,12,8,6].

这是我的解决方案

public static int[] productExceptSelf(int[] nums) {

int[] result = new int[nums.length];

int leftProduct = 1;
int rightProduct = 1;

for(int i = 0; i < result.length; i++){
result[i] = leftProduct;
leftProduct *= nums[i];
}

for(int i=nums.length -1; i >= 0; i --){
result[i] *= rightProduct;
rightProduct *= nums[i];
}
return result;
}

public static void main(String[] args) {
int[] output = productExceptSelf(new int[]{1, 2, 3, 4});
Arrays.stream(output).forEach(System.out::println);
}

这很好用。我想要学习的是如何在 Java 8 中重写此代码。就像 Java 8 中循环的不同选项一样。

最佳答案

您可以用几行稍微不同的代码来完成:

public static int[] productExceptSelf(int[] nums) {
int all = Arrays.stream(nums).reduce(1, (x, y) -> x * y);
return IntStream.range(0, nums.length).map(x -> all / nums[x]).toArray();
}

关于arrays - 在 Java 8 中迭代 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47003121/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com