剑指 Offer 66. 构建乘积数组

Posted Billy Miracle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 66. 构建乘积数组相关的知识,希望对你有一定的参考价值。

思考:

他让计算两侧的乘积和,本来可以通过计算总乘积,除以当前位来计算,但是他说了不让使用除法,可以使用两个数组,分别存储从左侧向右的乘积,一个保存从右侧向左的乘积。每次拿出来使用就可以了。

代码:

class Solution 
public:
    vector<int> constructArr(vector<int>& a) 
        vector<int> front, rear, answer;
        if (a.size() == 0) 
            return answer;
        
        if (a.size() == 1) 
            answer.push_back(1);
            return answer;
        
        for (int i = 0; i < a.size() - 1; ++i) 
            if (i == 0) 
                front.push_back(a[0]);
                rear.push_back(a[a.size() - 1]);
             else 
                front.push_back(a[i] * front[i - 1]);
                rear.push_back(a[a.size() - 1 - i] * rear[i - 1]);
            
        
        for (int i = 0; i < a.size(); ++i) 
            if (i == 0) 
                answer.push_back(rear[a.size() - 2]);
             else if (i == a.size() - 1) 
                answer.push_back(front[a.size() - 2]);
             else 
                answer.push_back(front[i - 1] * rear[a.size() - 2 - i]);
            
        
        return answer;
    
;

以上是关于剑指 Offer 66. 构建乘积数组的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode & 剑指offer刷题数组题12:66 构建乘积数组

剑指 Offer 66. 构建乘积数组

算法剑指 Offer 66. 构建乘积数组

leetcode剑指 Offer 66. 构建乘积数组

剑指 Offer 66. 构建乘积数组

剑指 Offer 66. 构建乘积数组(转换求解上下三角,Java)