除自身以外数组的乘积

目录

一:题目链接

二:题目思路

三:代码实现


一:题目链接

二:题目思路

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

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

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;
相关推荐
不知名的忻21 小时前
B 树与 B+ 树:面试完全指南
b树·算法·面试·b+树
L、21821 小时前
CANN算子开发调试实战:从“Segmentation Fault“到定位根因的完整流程
java·开发语言
运筹vivo@1 天前
2657. 找到两个数组的前缀公共数组 | 难度:中等
算法·leetcode·职场和发展·哈希表
索木木1 天前
NCCL SHARP 和 TREE算法
java·服务器·算法
NiceCloud喜云1 天前
Claude Files API 深入:从上传、复用到配额管理的工程化指南
android·java·数据库·人工智能·python·json·飞书
超梦dasgg1 天前
Java 生产环境 MQ 技术选型全解析
java·开发语言·java-rocketmq·java-rabbitmq
霸道流氓气质1 天前
Spring AI 多工具链式调用(Tool Chain)极简实战
java·人工智能·spring
心中有国也有家1 天前
hccl 架构拆解:昇腾集合通信库到底在做什么?
人工智能·经验分享·笔记·分布式·算法·架构
罗超驿1 天前
22.深入剖析JDBC架构:从原生API到企业级数据交互核心
java·数据库·mysql·面试
一直有一个ac的梦想1 天前
cmu15445 2025fall lec 18 transactions with two-phase lock
java·开发语言·数据库