Given an array nums of n integers where n > 1, return an array outputsuch that output[i] is equal to the product of all the elements of nums except nums[i].
Example:
Input: [1,2,3,4]
Output: [24,12,8,6]
方法一、算两个数组,一个是这个数前面的所有数的乘积,一个是这个数后面的所有数的乘积。那个这个位置就是这个数前面的所有数乘以这个数后面的所有数。还可以提高!
这是拆解问题的一个思路!
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] before_mul = new int[nums.length];
int[] end_mul = new int[nums.length];
before_mul[0] = nums[0];
end_mul[nums.length-1] = nums[nums.length-1];
for(int i=1;i<nums.length;i++){
before_mul[i]=before_mul[i-1]*nums[i];
end_mul[nums.length-1-i]=end_mul[nums.length-i]*nums[nums.length-1-i];
}
int[] result_list = new int[nums.length];
result_list[0]=end_mul[1];
result_list[nums.length-1]=before_mul[nums.length-2];
for(int i=1;i<nums.length-1;i++){
result_list[i]=before_mul[i-1]*end_mul[i+1];
}
return result_list;
}
}
本文介绍了一种高效的算法,用于计算给定数组中除当前元素外所有元素的乘积。该算法通过预先计算每个元素前后的累积乘积来实现,避免了直接使用除法运算。
427

被折叠的 条评论
为什么被折叠?



