力扣-238

题目

给你一个整数数组 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]

思路

题目要求不要用乘法,且复杂度为On。所以我们考虑用前缀乘积的方式来做,考虑到不止有前缀还有后缀我们需要一个等大的数组记录下前缀方便后面倒序累乘后缀乘积

解题方法

建立数组temp,temp[i]表示下标为i数的前缀乘积(不包括他本身因为题目要的就是除他本身的乘积),注意第一个temp[0]=1方便后续后缀乘积的计算。记录好前缀乘积后倒序累乘,用一个suf保存倒序累乘的值,suf初始值为1,遍历从n-2开始,n-1因为已经是最后一个不用算了

代码

java 复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n=nums.length;
        int[] temp=new int[n];
        int suf=1;
        for(int i=0;i<n;i++){
            if(i==0){
            temp[i]=1;
            continue; 
            }
            
            temp[i]=nums[i-1]*temp[i-1];
        }
        for(int i=n-2;i>=0;i--){
            suf=suf*nums[i+1];
            temp[i]=suf*temp[i];
        }
        return temp;
    }
}
相关推荐
朱剑君29 分钟前
第八天——贪心算法——队列重构问题
算法·贪心算法·重构
仙人掌_lz31 分钟前
深度理解用于多智能体强化学习的单调价值函数分解QMIX算法:基于python从零实现
python·算法·强化学习·rl·价值函数
riri19191 小时前
算法分析:蛮力法
数据结构·算法
Christo31 小时前
关于在深度聚类中Representation Collapse现象
人工智能·深度学习·算法·机器学习·数据挖掘·embedding·聚类
摄殓永恒1 小时前
猫咪几岁
数据结构·c++·算法
机器学习之心1 小时前
分类预测 | Matlab实现ABC-Transformer人工蜂群算法优化编码器多特征分类预测/故障诊断Matlab实现
算法·matlab·分类
oioihoii1 小时前
C++23 新增的查找算法详解:ranges::find_last 系列函数
java·算法·c++23
MoonBit月兔1 小时前
插件双更新:LeetCode 刷题支持正式上线,JetBrains IDE 插件持续升级!
ide·算法·leetcode
似水এ᭄往昔2 小时前
【数据结构】——队列
c语言·数据结构·c++·链表
水水沝淼㵘2 小时前
嵌入式开发学习日志(数据结构--双链表)Day21
c语言·数据结构·学习·算法·排序算法