题目:
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]
.
代码:
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int n = nums.size(); vector<int> fromBegin(n); vector<int> fromLast(n); fromBegin[0] = fromLast[0] = 1; for(int i = 1; i < n; ++i) { fromBegin[i] = fromBegin[i-1] * nums[i-1]; fromLast[i] = fromLast[i-1] *nums[n-i]; } vector<int> res(n); for(int i = 0; i < n; ++i) { res[i] = fromBegin[i]*fromLast[n-i-1]; } return res; } };