<剑指Offer>面试题66: 构建乘积数组

题目描述

  • 给定一个数组 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]

题目解读

  • 剑指Offer 312
  • 书上讲的很详细,看书

代码

class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        int length = A.size();
        vector<int> B(length, 1);
        
        for(int i=1; i < length; i++){
            B[i] = B[i-1] * A[i-1];
        }
        
        int temp = 1;
        // 在上一步,B[length-1]已经构建好了
        for(int i=length-2; i >= 0; i--){ 
            temp = temp * A[i+1];
            B[i] = B[i] * temp;
        }
        
        return B;
    }
};

总结展望

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容