给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
输入: [1,2,3,4] 输出: [24,12,8,6]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/product-of-array-except-self 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] ans = new int[nums.length];
int temp = 1;
for (int i = 0 ; i < ans.length; i++) {
ans[i] = temp;
temp *= nums[i];
}
temp = 1;
for (int i = ans.length - 1; i >= 0; i--) {
ans[i] = temp * ans[i];
temp *= nums[i];
}
return ans;
}
}
第一次循环:ans 中的值为当前数左面的乘积,因为第一个数左面没有数,所以初始设置为 1;
第二次循环:temp 为当前数右面的乘积,与刚才计算出来的 ans 乘在一起即可。
时间复杂度:O(N) ,其中 N 指的是数组 nums 的大小。 空间复杂度:O(1),输出数组不算进空间复杂度中,因此我们只需要常数的空间存放变量。