很有趣的思路,这道题难在思维的转换,需要好生思考,每一位的输出结果被该位分成前后两段,本质上讲从前和从后遍历没有区别,故而可以在统一循环里完成,所以一次循环后就可输出结果。
参考人家的解法
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int n = nums.size();
vector<int> output (n, 1);
int fromHead = 1, fromTail = 1;
for (int i = 0; i < n; i ++){
output[i] *= fromHead;
fromHead *= nums[i];
output[n - 1 - i] *= fromTail;
fromTail *= nums[n - 1 - i];
}
return output;
}
};