Given an array nums
of n integers where n > 1, return an array output
such 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;
}
}