给你一个整数数组 nums
,返回 数组 answer
,其中 answer[i]
等于 nums
中除 nums[i]
之外其余各元素的乘积 。
题目数据 保证 数组 nums
之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请 不要使用除法,且在 O(n)
时间复杂度内完成此题
class Solution {
public: vector<int> productExceptSelf(vector<int>& nums){
int n = nums.size();
int m = 1, answer = 1;
vector<int> ans(n,1);
for (int i = 0; i < n; i++) {
ans[i] = m;
m *= nums[i];
}
for(int j=n-1;j>=0;j--){
ans[j]*=answer;
answer *=nums[j];
}
return ans;
}
};
首先不让用除法,也就排除都乘起来除以当前值的可能。
其次学会了vector创建数组,也就是vec<int> array(m,n)
最后代码逻辑就是先将前积算出来,并且存在ans【】中,然后再算后积,非常高明的一种策略。