思路:
首先定义答案数组,s[i] 表示 nums[0 ~ i - 1] 的乘积,那么最后的答案就是反向遍历数组,s记录路径的乘积。
代码:
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> res(nums.size(),1);// s[i] : 0 ~ i - 1 乘积
for(int i = 0; i < nums.size(); i++){
if(i) res[i] = nums[i - 1] * res[i - 1];
}
for(int j = nums.size() - 1, s = 1; j >= 0; j--){
res[j] *= s;
s = s *nums[j];
}
return res;
}
};
评论区