
vector<int> productExceptSelf(vector<int>& nums) {
int size=nums.size();
vector<int> matrix(size);
//此处分别存的是
//1,
//a[0],
//...,
//a[0]*a[1]*...*a[n-3],
//a[0]*a[1]*...*a[n-2]
int k=1;
for(int i=0;i<size;++i){
matrix[i]=k;
k*=nums[i];
}
//分别乘以
//a[1]*a[2]*...*a[n-1],
//a[2]*a[3]*...*a[n-1],
//...,
//a[n-1],
//1
k=1;
for(int i=size-1;i>=0;--i){
matrix[i]*=k;
k*=nums[i];
}
return matrix;
}
本文介绍了一种算法,用于解决一个整数数组的问题,返回一个新的数组,其中每个元素是原始数组中除自身以外所有元素的乘积。该算法通过两次遍历实现,避免了直接相乘可能产生的溢出问题。
150

被折叠的 条评论
为什么被折叠?



