标签:
求除了自己之外数组所有元素的乘积。
新建一个数组,每个位置保存前面所有数的乘积。
反过来,另一个数组每个位置保存后面所有数乘积。
两个数组每个位置相乘即为所求。这样时间复杂度为O(n);
为了保证O(1)space,所以上面的操作进行融合,具体见代码。
1 class Solution {
2 public:
3 vector<int> productExceptSelf(vector<int>& nums) {
4 //思路 顺序求前面所有数的乘机,再反过来,
5 int n = nums.size();
6 vector<int> v;
7 int tmp=1;
8 v.push_back(1);
9 for(int i=1;i<n;i++)
10 {
11 tmp *= nums[i-1];
12 v.push_back(tmp);
13 }
14 tmp = nums[n-1];
15 for(int j=n-2;j>=0;j--)
16 {
17 v[j] *= tmp;
18 tmp *= nums[j];
19 }
20
21 return v;
22 }
23 };
标签:
原文地址:http://www.cnblogs.com/ZhangYushuang/p/4746322.html