除自身以外数组的乘积

目录

一:题目链接

二:题目思路

三:代码实现


一:题目链接

二:题目思路

题目的思路与我们上一节讲的 "寻找数组的中心下标" 是一样的,只不过,有一些细节问题的处理。

思路就是定义和初始化 "前缀积" 数组 和 "后缀积" 数组,这些数组的元素是等于**前面(后面)几个 元素的乘积 ,不包括当前位置的元素乘积,**也就是:

java 复制代码
    //前缀积
    first_dp[i] = first_dp[i -1] * nums[i -1];

    //后缀积
    end_dp[i] = end_dp[i + 1] * nums[i + 1];

细节问题 就是,未初始化前,first_dp 0 和 end_dp n - 1 的值是 0,如果直接初始化,后续一直为 0,是错误的,这里我们可以先 令这两个位置的元素为 1 ,从此,后续的初始化就不会出现问题了。

三:代码实现

java 复制代码
        int n = nums.length;
        int[] answer = new int[n];

        int[] first_dp = new int[n];
        int[] end_dp = new int[n];

        //处理细节问题
        first_dp[0] = 1;
        end_dp[n -1] = 1;

        //初始化前缀积,后缀积数组
        for(int i = 1;i < n;i++) {
            first_dp[i] = first_dp[i -1] * nums[i -1];
        }

        for(int i = n - 2;i >= 0;i--) {
            end_dp[i] = end_dp[i + 1] * nums[i + 1];
        }

        //使用
        for(int i = 0;i < n;i++) {
            answer[i] = first_dp[i] * end_dp[i];
        }

        return answer;
相关推荐
BK贝壳4 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
拓恒技术7 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨7 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫7 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
文丑颜不良啊9 小时前
LeetCode876~900题目解析
java·leetcode
罗西的思考9 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
aloha_7899 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
淡海水9 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
知守观10 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅10 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code