Java构建乘积数组的方法可以通过使用常规的算法实现。假设给定一个长度为n的整数数组,要求构建一个长度为n的数组,其中的每个元素都是原始数组中除该元素外所有元素的乘积。实现这个算法的时候,可以按照以下步骤进行:
-
创建两个辅助数组leftProduct和rightProduct,它们的长度都是n。
-
对leftProduct数组进行初始化,使得leftProduct[0]等于1,leftProduct[i]等于原始数组0到i-1位置的所有元素的乘积。
-
对rightProduct数组进行初始化,使得rightProduct[n-1]等于1,rightProduct[i]等于原始数组i+1到n-1位置的所有元素的乘积。
-
创建一个result数组,遍历原始数组,将每个元素的左乘积leftProduct[i]与右乘积rightProduct[i]相乘,赋值给结果数组result[i]。
下面提供两个示例:
示例1:假设原始数组nums为{1, 2, 3, 4},则根据上述步骤,可以得到leftProduct为{1, 1, 2, 6},rightProduct为{24, 12, 4, 1},result为{24, 12, 8, 6},即构建乘积数组为{24, 12, 8, 6}。
示例2:假设原始数组nums为{2, 4, 6, 8, 10},则根据上述步骤,可以得到leftProduct为{1, 2, 8, 48, 384},rightProduct为{1920, 480, 80, 10, 1},result为{1920, 960, 320, 60, 38},即构建乘积数组为{1920, 960, 320, 60, 38}。
完整的Java代码如下所示:
public int[] productExceptSelf(int[] nums) {
int n = nums.length;
int[] leftProduct = new int[n];
int[] rightProduct = new int[n];
int[] result = new int[n];
leftProduct[0] = 1;
for (int i = 1; i < n; i++) {
leftProduct[i] = leftProduct[i-1] * nums[i-1];
}
rightProduct[n-1] = 1;
for (int i = n-2; i >= 0; i--) {
rightProduct[i] = rightProduct[i+1] * nums[i+1];
}
for (int i = 0; i < n; i++) {
result[i] = leftProduct[i] * rightProduct[i];
}
return result;
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java构建乘积数组的方法 - Python技术站