题目
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].
给一个n个int的数组nums,其中n>1,返回一个数组,使得output[i]等于除了nums[i]之外所有nums元素的乘积
Example:
例子
Input: [1,2,3,4]
Output: [24,12,8,6]
Note: Please solve it without division and in O(n).
注意:请在没有除法并且时间复杂度为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.)
你能用恒定的空间复杂度解决它么?处于分析空间复杂度的目的,输出的数组不算额外的空间
代码
通过两次迭代
public class Solution {
public int[] productExceptSelf(int[] nums) {
int[] result = new int[nums.length];
for (int i = 0, tmp = 1; i < nums.length; i++) {
result[i] = tmp;
tmp *= nums[i];
}
for (int i = nums.length - 1, tmp = 1; i >= 0; i--) {
result[i] *= tmp;
tmp *= nums[i];
}
return result;
}
}