238. 除自身以外数组的乘积 - 力扣(LeetCode)
/*求自身以外的数组的乘积,这是一道典型的乘积数组的问题,可以通过将一个n*n的矩阵划分成如下的上三角和下三角的形式。通过两次数组的遍历,分别从前和从后求连续乘积,来满足题目要求。
*/
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
//采用乘积数组的思想,分别求出上三角和下三角,即为所求。
int n=nums.size();
vector<int> ans(n,1);
for(int i=0;i<n-1;++i)ans[i+1]=ans[i]*nums[i];
for(int i=n-1,k=nums[n-1];i>=1;--i,k*=nums[i])ans[i-1]*=k;
return ans;
}
};