原题网址:http://www.lintcode.com/zh-cn/problem/product-of-array-exclude-itself/
给定一个整数数组A。
定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。
样例
给出A=[1, 2, 3],返回 B为[6, 3, 2]
标签
1 #include <iostream>
2 #include <vector>
3 #include <math.h>
4 using namespace std;
5
6
7 vector<long long> productExcludeItself(vector<int> &nums)
8 {
9 int size=nums.size();
10 /*vector<long long> numB;
11 for (int i=0;i<size;i++)
12 {
13 long long temp1=1;
14 long long temp2=1;
15 for (int j=0;j<i;j++)
16 {
17 temp1=temp1*nums[j];
18 }
19 for (int k=i+1;k<size;k++)
20 {
21 temp2=temp2*nums[k];
22 }
23 numB.push_back(temp2*temp1);
24 }
25
26 return numB;*/
27
28 vector<long long> leftnum(size,1);
29 long long temp=1;
30 //leftnum中存放的是nums数组中0~i-1的乘积;
31 for (int i=0;i<size;i++)
32 {
33 leftnum[i]=temp;
34 temp=temp*nums[i];
35 }
36 //leftnum中存放的是nums数组中除i外其余元素的乘积;
37 temp=1;
38 for (int j=size-1;j>=0;j--)
39 {
40 leftnum[j]=leftnum[j]*temp;
41 temp=temp*nums[j];
42 }
43 return leftnum;
44 }
参考:
1 https://blog.csdn.net/shinanhualiu/article/details/48880049