1. 程式人生 > >給定一個數組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]。不能使用除法

給定一個數組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]。不能使用除法

題目描述

給定一個數組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]。不能使用除法。

/*
思路:題目要求B的i個元素等於A中除了i個元素所以元素乘積
因此思路很清晰,雙重迴圈:
第一層迴圈表示將要相乘A的元素;
第二層迴圈表示B中的元素要乘上A的元素(判斷條件:i==j則直接跳過)
*/

class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        int size = A.size();
        vector<int> B(size,1);
        for(int i=0;i<size;i++){
            for(int j=0;j<size;j++){
                if(i == j) continue;
                B[j] *= A[i];
            }
        }
        return B;
    }
};