【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
相关推荐
CodeToGym21 分钟前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel
凡人叶枫31 分钟前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
power 雀儿38 分钟前
掩码(Mask)机制 结合 多头自注意力函数
算法
会叫的恐龙42 分钟前
C++ 核心知识点汇总(第六日)(字符串)
c++·算法·字符串
JMchen1231 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
小糯米6011 小时前
C++顺序表和vector
开发语言·c++·算法
阔皮大师1 小时前
INote轻量文本编辑器
java·javascript·python·c#
小法师爱分享1 小时前
StickyNotes,简单便签超实用
java·python
qq_297574671 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
We་ct1 小时前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript