LeetCode hot100——除了自身以外数组的乘积

题目

给你一个整数数组 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
  • 输入 保证 数组 answer[i] 在 32 位 整数范围内

进阶: 你可以在 O(1) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为额外空间。)


题解

复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;

        int[] pre = new int[n];//前缀积
        int[] suf = new int[n];//后缀积
        pre[0] = 1;
        suf[n - 1] = 1;

        for(int i = 1;i < n;i++){
            pre[i] = pre[i - 1] * nums[i - 1];
        }
        for (int i = n - 2;i >= 0;i--) {
            suf[i] = suf[i + 1] * nums[i + 1];
        }

        int[] ans = new int[n];
        for (int i = 0; i < n; i++) {
            ans[i] = pre[i] * suf[i];
        }
        return ans;
    }
}
相关推荐
小七在进步7 小时前
类和对象(五)
java·开发语言·算法
wzdark8 小时前
算法与数据结构教学的可视化新模式探索4
数据结构
就叫年华吧丶8 小时前
长文档点目录定位总是不准?一个 content-visibility + 平滑滚动引发的连环坑(Vue3 实战)
前端·javascript·算法·vue
FPGA信号处理8 小时前
【信号检测与估计】第四节课:非高斯噪声下的 BLUE、极大似然与 EM 算法
人工智能·算法·机器学习
.道阻且长.8 小时前
C++ 11:可变参数模板
前端·c++·算法
hzxpaipai8 小时前
企业官网后台怎么设计?从产品分类、参数到资料下载的数据结构
数据结构
Doubbbbbbble云11 小时前
基于贪心算法的区间覆盖问题求解策略4
算法·贪心算法
不会就选b17 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
Cccp.12320 小时前
【leetcode】(七)前缀树和贪心算法
数据结构·leetcode·贪心算法
千里码aicood20 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类