题目:
Given an array of n integers where n > 1, nums
, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Solve it without division and in O(n).
For example, given [1,2,3,4]
, return [24,12,8,6]
.
题目规定不用除法,所以将全体数字乘一遍然后除以自己的方法不能用(不出现0的情况),在网上搜到了简洁的代码
vector<int> productExceptSelf(vector<int>& nums) {//从左向右扫描,创造一个累乘nums[i]之前(不包含i)所有数的vector<i>
vector<int> res(nums.size(), 1);
for (int i = 1; i < nums.size(); i++)
{
res[i] = res[i - 1] * nums[i - 1];
}
int right = 1;
for (int j = nums.size() - 1; j>=0; --j)//从右向左扫描 乘以剩下的数
{
res[j] *= right;
right *= nums[j];
}
return res;
}