zoukankan      html  css  js  c++  java
  • 构建乘积数组

    #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;

    }

  • 相关阅读:
    微信支付 h5
    微信支付 h5
    Android stadio butternife工具
    Android stadio butternife工具
    Android stadio 自定义debug release keystore
    Android stadio 自定义debug release keystore
    Android 微信支付步骤
    Android 微信支付步骤
    t
    t
  • 原文地址:https://www.cnblogs.com/bananaa/p/7545027.html
Copyright © 2011-2022 走看看