首页 > 其他 > 详细

Product of Array Except Self

时间:2015-08-20 22:23:16      阅读:146      评论:0      收藏:0      [点我收藏+]

求除了自己之外数组所有元素的乘积。

新建一个数组,每个位置保存前面所有数的乘积。

反过来,另一个数组每个位置保存后面所有数乘积。

两个数组每个位置相乘即为所求。这样时间复杂度为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 };

Product of Array Except Self

原文:http://www.cnblogs.com/ZhangYushuang/p/4746322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!