1 题目
2 分析
时间复杂度O(n)
思路简单,直接看代码即可。
注意细节,防止数组访问越界:ans数组长度为n+2,前后为1。 nums数组大小为n
3 AC代码
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int n=nums.size();
vector<int> ans;
int res1[n+2];//记录从后往前乘积
int res2[n+2];//记录从前往后乘积
res1[0]=1;
for(int i=1;i<=n;i++){
res1[i]=res1[i-1]*nums[i-1];
}
res2[n+1]=1;
for(int i=n;i>0;i--){
res2[i]=res2[i+1]*nums[i-1];
}
for(int i=1;i<=n;i++){
int x=res1[i-1]*res2[i+1];
ans.push_back(x);
}
return ans;
}
};