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

    构建乘积数组

    题目描述

    给定一个数组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]。不能使用除法。

    大体思路是构造一个二维数组, 数组下标m=n时为1, 构造一个下, 上三角形矩阵, 正如第一个for构造的是下三角形矩阵, 第二个for构造的是上三角形矩阵, 两个矩阵当前行的乘积可用上/下一行的乘积值来获得, 最后把两个矩阵的值相乘

    class Solution {
    public:
        vector<int> multiply(const vector<int>& A) {
            int len = A.size();
            vector<int> ret;
            ret.resize(A.size());
            
            if (len) {
                ret[0] = 1;
                for (int i = 1; i < len; i++) {
                    ret[i] = ret[i - 1] * A[i - 1];
                }
                
                int temp = 1;
                for (int i = A.size() - 2; i >= 0; i--) {
                    temp *= A[i + 1];
                    ret[i] = ret[i] * temp;
                }
            }
            
            return ret;
        }
    };
    

    暴力法

    class Solution {
    public:
        vector<int> multiply(const vector<int>& A) {
            vector<int> ret;
            int temp = 1;
            int i = 0;
            
            while (i < A.size()) {
                for (int j = 0; j < A.size(); j++) {
                    if (j == i) {
                        continue;
                    }
                    temp = temp * A[j];
                }
                ret.push_back(temp);
                temp = 1;
                i++;
            }
            return ret;
        }
    };
    
  • 相关阅读:
    跳码与一机多终端
    SCRUM REPORT DIRECTORY
    ASE Backend Review
    ASE Beta Sprint
    ASE Beta Sprint
    ASE Backend Alpha Sprint Review
    ASE Alpha Sprint
    ASE Alpha Sprint
    ASE Alpha Sprint
    ASE Alpha Sprint
  • 原文地址:https://www.cnblogs.com/hesper/p/10501982.html
Copyright © 2011-2022 走看看