LintCode_50 数组剔除元素后的乘积
题目
给定一个整数数组A。
定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。
样例
给出A=[1, 2, 3],返回 B为[6, 3, 2]
vector<long long> productExcludeItself(vector<int> &nums) { // write your code here vector<long long> v(nums.size()); vector<long long> t(nums.size()); v[v.size()-1] = 1ll; int i; for(i = 0; i < nums.size(); ++i) { t[i] = nums[i]; } for(i = v.size()-2; i>=0; --i) v[i] = v[i + 1] * t[i + 1]; int cur = t[0]; t[0] = 1; for(i = 1; i < t.size(); ++i) { int curr = t[i]; t[i] = t[i - 1] * cur; cur = curr; } for(i = 0; i < t.size(); ++i) { v[i] = t[i] * v[i]; } return v; }