Sword se refiere a Oferta para construir una matriz de productos C ++

Descripción del Título

Inserte la descripción de la imagen aquí

Solución partición izquierda y derecha

Inserte la descripción de la imagen aquí

class Solution {
    
    
public:
    vector<int> constructArr(vector<int>& a) {
    
    
        int len = a.size();
        if(len == 0) return {
    
    };
        vector<int> ans(len, 0);
        vector<int> left(len, 0);
        vector<int> right(len, 0);
        //第一个解的左边数组之合不存在和最后一个解的右边数组之合不存在
        left[0] = right[len - 1] = 1;
        for(int i = 1; i < len; i ++) left[i] = left[i - 1] * a[i - 1];
        for(int i = len - 2; i >= 0; i --) right[i] = right[i + 1] * a[i + 1];
        for(int i = 0; i < len; i ++) ans[i] = left[i] * right[i];
        return ans;
    }
};

Inserte la descripción de la imagen aquí
Complejidad temporal O (N)
Complejidad espacial O (N)

Supongo que te gusta

Origin blog.csdn.net/qq_42883222/article/details/112839368
Recomendado
Clasificación