【leetcode hot 100 238】除自身以外数组的乘积

解法一:(左右乘积列表)利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀与后缀)相乘得到答案。

java 复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {
        int len = nums.length;
        int[] L = new int[len]; // 存放i左边的乘积
        int[] R = new int[len]; // 存放i右边的乘积
        int[] result = new int[len]; 

        // 第1个元素左边没有数据,乘积为0
        L[0]=1;
        for(int i=1;i<len;i++){
            L[i]=L[i-1]*nums[i-1];
        }

        // 第len个元素右边没有数据,乘积为0
        R[len-1]=1;
        for(int i=len-2;i>=0;i--){
            R[i]=R[i+1]*nums[i+1];
        }

        // 计算
        for(int i=0;i<len;i++){
            result[i]=L[i]*R[i];
        }
        return result;
    }
}

注意:

  • 左乘积数组:第1个元素左边没有数据,乘积为0
  • 右乘积数组:第len个元素右边没有数据,乘积为0
相关推荐
封印师请假去地球钓鱼1 分钟前
粒子滤波|粒子滤波算法介绍
算法
码银11 分钟前
基于Java的Markdown到Word文档转换工具的实现
java·word
皮卡蛋炒饭.13 分钟前
数据结构——堆
数据结构·算法
Mr_Xuhhh30 分钟前
QWidget的属性
java·数据库·c++·qt·系统架构
harykali34 分钟前
Datawhale AI 夏令营:Task2从MCP入门到MCP Sever设计
算法·mcp
sun00770037 分钟前
C++实现二叉树左右子树交换算法
开发语言·c++·算法
大白话讲知识38 分钟前
代码随想录算法训练营第三十一天|738.单调递增的数字 968.监控二叉树
数据结构·算法
熬了夜的程序员42 分钟前
【华为机试】HJ30 字符串合并处理
算法·华为·面试·go
小张在编程1 小时前
Java设计模式实战:备忘录模式与状态机模式的“状态管理”双雄
java·设计模式·备忘录模式
大葱白菜1 小时前
Java 接口与抽象类:深入解析两者的区别及应用场景
java·后端