LeetCode 238. 除自身以外数组的乘积

原题链接:. - 力扣(LeetCode)

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

不要使用除法, 且在 O(n) 时间复杂度内完成此题。

示例 1:

复制代码
输入: nums = [1,2,3,4]
输出: [24,12,8,6]

示例 2:

复制代码
输入: nums = [-1,1,0,-3,3]
输出: [0,0,9,0,0]

提示:

  • 2 <= nums.length <= 105
  • -30 <= nums[i] <= 30
  • 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内

思路:

本题可采用 取每个元素 nums[ i ]之前所有的元素 的乘积 pre[ i ]和 每个元素之后所有元素的乘积 behind[ i ] 做乘积的方法,得出 res[ i ]。即 res[ i ] = pre[ i ] * behind[ i ],具体可见网上大佬的解析:

代码:

java 复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {    
        int n=nums.length;
        int[] pre= new int[n];
        int[] behind= new int[n];
        int[] res= new int[n];
        pre[0]=1;
        for(int i=1;i<n;i++){
            pre[i]=pre[i-1]*nums[i-1];
        }
        behind[n-1]=1;
        for(int i=n-2;i>=0;i--){
            behind[i]=behind[i+1]*nums[i+1];
        }
        
        for(int i=0;i<n;i++){
            res[i]=pre[i]*behind[i];
        }
        return res;
    }
}

参考:. - 力扣(LeetCode)

相关推荐
杨连江3 分钟前
原子级平面限域协同晶核诱导定向生长单层鳞片石墨的研究
算法
MATLAB代码顾问9 分钟前
混合粒子群-模拟退火算法(HPSO-SA)求解作业车间调度问题——附MATLAB代码
算法·matlab·模拟退火算法
Felven13 分钟前
C. Prefix Min and Suffix Max
算法
加农炮手Jinx14 分钟前
LeetCode 26. Remove Duplicates from Sorted Array 题解
算法·leetcode·力扣
加农炮手Jinx14 分钟前
LeetCode 88. Merge Sorted Array 题解
算法·leetcode·力扣
格林威14 分钟前
线阵工业相机:如何计算线阵相机的行频(Line Rate)?公式+实例
开发语言·人工智能·数码相机·算法·计算机视觉·工业相机·线阵相机
yueyue54317 分钟前
透过现象看本质:以fast_lio架构的整套算法的局部避障改为TEB算法为例深度探讨——如何成为一个合格的算法架构师?
算法·架构
梨花爱跨境17 分钟前
红人视频×A10算法:亚马逊转化率与流量闭环实战
算法
阿Y加油吧22 分钟前
二刷 LeetCode:75. 颜色分类 & 31. 下一个排列 复盘笔记
笔记·算法·leetcode
风筝在晴天搁浅23 分钟前
LeetCode 378.有序矩阵中第K小的元素
算法·矩阵