力扣---------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]

提示:

2 <= nums.length <= 105

-30 <= nums[i] <= 30

输入 保证 数组 answer[i] 在 32 位 整数范围内

我的思路是先求出第i个元素左边所有的积 在求出右边所有的积 在将左右乘右边 就能得出除自身之外所有的积

用 [1,2,3,4]来举例子

left数组的值应该为[1,1,2,6]

right数组的值应该为[24,12,4,1]

所以最后结果为[24,12,8,6]

java 复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {
        int [] left=new int[nums.length];
        int [] right=new int[nums.length];
        int [] result=new int[nums.length];

        left[0]=1;
        for (int i = 1; i < nums.length; i++) {
            left[i]=left[i-1]*nums[i-1];
        }

        right[nums.length-1]=1;
        for (int i = nums.length-2; i >=0; i--) {
            right[i]=right[i+1]*nums[i+1];
        }

        for (int i = 0; i < nums.length; i++) {
            result[i]=left[i]*right[i];
        }

        return result;
}
}
相关推荐
燃于AC之乐1 小时前
我的算法修炼之路--4 ———我和算法的爱恨情仇
算法·前缀和·贪心算法·背包问题·洛谷
MM_MS7 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
独自破碎E7 小时前
【二分法】寻找峰值
算法
mit6.8248 小时前
位运算|拆分贪心
算法
ghie90908 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体18 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk9988 小时前
VSC优化算法MATLAB实现
开发语言·算法·matlab
Z1Jxxx8 小时前
加密算法加密算法
开发语言·c++·算法
乌萨奇也要立志学C++9 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法
vyuvyucd9 小时前
C++引用:高效编程的别名利器
算法