题目:
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;
}
本文介绍了一个数组问题的高效求解方法:给定一个整数数组,返回一个新数组,其中每个元素是原数组中除自身外所有元素的乘积。此算法避免了除法操作,通过两次遍历实现O(n)的时间复杂度。
491

被折叠的 条评论
为什么被折叠?



