原题目:
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
输入: [1,2,3,4]
输出: [24,12,8,6]
说明: 不要使用除法,且在 O(n) 时间复杂度内完成此题。
思路:
1.用for循环遍历数组中每个元素,在for循环中算出元素左边的乘积和
2.同上,但是用for循环算出元素右边的乘积和
代码:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> res(nums.size());
int k = 1;
for(int i = 0; i < res.size(); i++){
res[i] = k;
k = k * nums[i];
}
k = 1;
for(int i = res.size()- 1; i >= 0; i--){
res[i] *= k;
k *= nums[i];
}
return res;
}