zoukankan      html  css  js  c++  java
  • 剑指offer-面试题66-构建乘积数组-发散思维

    /*
    题目:
        链接:https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46
    	来源:牛客网
    
    	给定一个数组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]。不能使用除法。
    思路:
        C[i] = A[0]*...*A[i-1];
    	D[i] = A[i+1]*...*A[n-1];
    	B[i] = C[i]*D[i];
    **/
    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    
    vector<int> multiply(const vector<int>& A) {
        vector<int> B;
        int length = A.size();
        B.push_back(1);
        for(int i = 1; i < length; i++){
            B.push_back(B.back()*A[i-1]);
        }
    
        int temp = 1;
        for(int i = length-2; i >= 0; i--){
            temp *= A[i+1];
            B[i] *= temp;
        }
        return B;
    
    }
    int main(){
       vector<int> A={1,2,3,4,5};
       vector<int> B=multiply(A);
       for(int i = 0; i < B.size(); i++){
            cout<<B[i]<<" ";
       }
    }
    

       

  • 相关阅读:
    docker compose 笔记
    一个简单的计划
    译Node.js应用的持续部署
    Javascript中的字典和散列
    施耐德保护调试技巧
    施耐德Sepam 40系列备自投逻辑
    请随时告诉自己
    顺其自然
    启用
    我们能做的是......
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/12141835.html
Copyright © 2011-2022 走看看