给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。
示例:
输入: [1,2,3,4]
输出: [24,12,8,6]
说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> vecRes;
if(nums.size() == 0) return vecRes;
int size = nums.size();
//fill_n()每写一个值,都会通过back_inserter生成的插入迭代器实现,相当于在vector上调push_back,在容器末尾添加size个值为1的元素
fill_n(back_inserter(vecRes),size,1);
int left = 1, right = 1;
for(int i = 0; i < size; i++)
{
vecRes[i] = left;
left *= nums[i];
}
for(int i = size-1; i >= 0; i--)
{
vecRes[i] *= right;
right *= nums[i];
}
return vecRes;
}
};
整个题的思想就是从左往右乘一遍,再从右往左乘一遍
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/product-of-array-except-self
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。