50 数组剔出元素后的乘积

原题网址: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 }

参考:

https://blog.csdn.net/shinanhualiu/article/details/48880049

原文地址:https://www.cnblogs.com/Tang-tangt/p/8633171.html