您的位置:首页 > 其它

Product of Array Exclude Itself

2015-08-09 15:35 471 查看
Given an integers array A.

Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B WITHOUT divide operation.

Have you met this question in a real interview? 

Yes

Example

For A = 
[1, 2,
3]
, return 
[6, 3, 2]
.
按照定义做,定义两个数组A,B,A[i]表示i位置后的数的乘积,B[i]表示i前的数的乘积,这样ans[i] = A[I] * B[i];
class Solution {
public:
/**
* @param A: Given an integers array A
* @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1]
*/
//分段的思路,用两个数组B[i],表示i之前的数的乘积, A[i]表示i之后的数的乘积
vector<long long> productExcludeItself(vector<int> &nums) {
// write your code here
int len = nums.size();
vector<long long> ans;
if(len < 1)
return ans;
long long  *A = new long long[len + 5];
long long *B = new long long[len + 5];
for(int i = 0; i < len + 5; ++i)
{
A[i] = 1;
B[i] = 1;
}

for(int i = 1; i < len; ++i)
{
B[i] = nums[i - 1] * B[i - 1];
}

for(int i = len - 2; i >= 0; --i)
{
A[i] = A[i + 1] * nums[i + 1];
}

for(int i = 0; i < len; ++i)
{
ans.push_back(A[i] * B[i]);
}

return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Product of Array Exc