Product of Array Except Self
先从左往右扫一遍。res 数组对应的位置是nums对应的数字的左边的乘积,然后再用一个right 变量,然后从数组右往左遍历,同时更新当前遍历数组右边的乘积,当前数组res数组的数是其左边的乘积,左右相乘就是所要结果
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]
Note: Please solve it without division and in O(n).
Follow up: Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)
时间复杂度 o(n) 空间复杂度 o(n)
class Solution {
public int[] productExceptSelf(int[] nums) {
if(nums == null || nums.length == 0){
return new int[0];
}
int[] res = new int[nums.length];
res[0] = 1;
for(int i = 1; i < res.length;i++){
res[i] = nums[i-1] *res[i-1];
}
int right = 1;
for(int i = res.length-1;i>= 0 ;i--){
res[i] = right * res[i];
right = right * nums[i];
}
return res;
}
}
Last updated