构建乘积数组

Posted bananaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建乘积数组相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>
#include <pthread.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <stdlib.h>
#include <sstream>
using namespace std;



class Solution {
public:
      /*
        B[i]可以看做矩阵(A组成的方阵去掉对角线)中每行的乘积
        下三角用连乘可以很容易求得,上三角,从下往上也是连乘
        因此思路是先计算下三角中的连乘,即计算B[i]中的一部分,
        然后倒过来按上三角中的分布规律,把另一部分也乘进去
        */
    vector<int> multiply(const vector<int>& A) {
        int length=A.size();
        vector<int>B(length);//初始化数组B时没有确定长度报错了额
        if(length!=0){
            B[0]=1;
            for(int i=1;i<length;i++){
                B[i]=B[i-1]*A[i-1];
            }
            int temp=1;
            for(int j=length-2;j>=0;j--){
                temp*=A[j+1];
                B[j]*=temp;
            }
        }
        return B;
    }
};

int main()
{
    Solution s;
    vector<int> A = { 0,1,1,1,1,1,1,1,1,1 };
    vector<int> B=s.multiply(A);
    for(size_t i=0;i<A.size();i++)
        cout<<B[i]<<" ";
    cout<<endl;
    return 0;

}

以上是关于构建乘积数组的主要内容,如果未能解决你的问题,请参考以下文章

构建乘积数组

数组---构建乘积数组

构建乘积数组

构建乘积数组

剑指offer-66 构建乘积数组

剑指 Offer 66. 构建乘积数组