题意理解
将数组元素相乘,每个元素存放除本身之外其他元素的积。要求不用除法。
问题分析
两次遍历,一次是1,1,1×2, 1×2×3;一次是4×3×2,4×3,4,1。
其他
hard题不好想。
链接
vector<int> productExceptSelf(vector<int>& nums) {
int len = nums.size();
vector<int> output(len, 1);
output[0] = 1;
// cout << len << endl;
for(int i = 1; i < len; i ++)
{
output[i] = output[i-1] * nums[i-1]; //1, 1, 1*2, 1*2*3
//cout << i << '\t' << output[i] << endl;
}
int prod = 1;
for(int i = len - 1; i >= 0; i --)
{
output[i] *= prod; //4*3*2, 4*3, 4, 1
prod *= nums[i];
//cout << i << '\t' << output[i] << endl;
}
return output;
}