码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Product of Array Except Self (除自身外序列之积)

时间:2015-07-16 13:39:30      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

技术分享

 

 

题意:给一个序列nums,要求返回一个序列ans,两序列元素个数相同,ans第i个元素就是除了nums[i]之外所有的数相乘之积。

思路:时间O(n),额外空间O(0)。

  第一次扫一遍,处理nums[0~i-1]的积作为ans[i],这样的ans[i]就得到了i之前所有数之积,那么只剩下i后面所有数之积。

  第二次从后往前扫,跟第一次的做法一样,但是这次得开个临时变量存储积了。

 

技术分享
 1 class Solution {
 2 public:
 3     vector<int> productExceptSelf(vector<int>& nums) {
 4         vector<int> ans(nums.size(),1);
 5         if(nums.size()==1)  return ans;
 6         for(int i=1; i<nums.size(); i++)    ans[i]=ans[i-1]*nums[i-1];  //i之前的部分先乘
 7 
 8         int sum=1;
 9         for(int i=nums.size()-2; i>=0; i--) //i后面部分用个变量sum存。
10         {
11             sum*=nums[i+1];
12             ans[i]*=sum;
13         }
14         return ans;
15     }
16 };
AC代码

 

LeetCode Product of Array Except Self (除自身外序列之积)

标签:

原文地址:http://www.cnblogs.com/xcw0754/p/4650695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!