剑指offer 构建乘积数组

题目:给定一个数组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[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)

代码:

复制代码
class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        int length=A.size();
            vector<int> B(length);
        int temp=1;
        for(int i=0;i<length;i++){
            B[i]=temp;
            temp*=A[i];
        }
        temp=1;
        for(int i=length-1;i>=0;i--){
            B[i]*=temp;
            temp*=A[i];
        }
        return B;
    }
};
复制代码

我的笔记:

  将数组计算分为上下两部分进行,第一段迭代计算下三角,第二段迭代计算上三角。

1 A1 A2 ... An-2 An-1
A0 1 A2 ... An-2 An-1
A0 A1 1 ... An-2 An-1
A0 A1 A2 1 An-2 An-1
A0 A1 A2 ... 1 An-1
A0 A1 A2 ... An-2 1
posted @   John_yan15  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示