码迷,mamicode.com
首页 > 编程语言 > 详细

66 构建乘积数组

时间:2019-05-10 16:41:42      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:lap   tor   mic   style   边界值   image   turn   空间   返回   

题目描述:

给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。

测试样例:

 1)功能测试(输入数组包含正数、负数、一个0、多个0)

 2)边界值测试(输入数组长度为0)

解题思路:

技术图片

注意代码中数组C与数组D的计算,都存在返回数组B中,并不需要额外的空间!!!

class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        int sz = A.size();
        vector<int> b(sz,1);
        if(sz>1){//数组中至少含有两个元素
            for(int i=1;i<sz;i++){
                b[i]=A[i-1]*b[i-1];
            }
            //b0: 1  b1:A0  b2:A0*A1 b3:A0*A1*A2
            
            int temp = 1;
            for(int i=sz-2;i>=0;i--){
                temp = temp*A[i+1];
                b[i]=b[i]*temp;
            }
        }
        
        return b;
    
    }
};

  

66 构建乘积数组

标签:lap   tor   mic   style   边界值   image   turn   空间   返回   

原文地址:https://www.cnblogs.com/GuoXinxin/p/10844694.html

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