给定长度为 n 的整数数组 nums
,其中 n > 1,返回输出数组 output
,其中 output[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积。
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
进阶: 你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)
res = [ 1 , a0 , a0a1 , a0a1a2]
t = [ a3 , a3a2 , a3a2a1]
python:
class Solution(object):
def productExceptSelf(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
if len(nums) <= 1:
return nums
res = [1] * len(nums)
for i in range(1,len(nums)):
res[i] = res[i - 1] * nums[i - 1]
t = 1
i = len(nums) - 2
while i >= 0:
t *= nums[i + 1]
res[i] *= t
i -= 1
return res
C++:
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int n = nums.size();
if(n <= 1) return nums;
vector<int> res(n,1);
for(int i = 1;i < n;i++){
res[i] = nums[i-1]*res[i-1];
}
int t = 1;
for(int i = n - 2;i >= 0;i--){
t *= nums[i + 1];
res[i] *= t;
}
return res;
}
};