• LeetCode(13)除自身以外数组的乘积【数组/字符串】【中等】


    在这里插入图片描述

    链接: 238. 除自身以外数组的乘积

    1.题目

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

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

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

    示例 1:

    输入: nums = [1,2,3,4]
    输出: [24,12,8,6]
    
    • 1
    • 2

    示例 2:

    输入: nums = [-1,1,0,-3,3]
    输出: [0,0,9,0,0]
    
    • 1
    • 2

    提示:

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

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


    2.答案

    class Solution {
        public int[] productExceptSelf(int[] nums) {
            if (nums.length < 2) {
                return nums;
            }
            // 获取前面部分乘积
            int beforeAll = 1;
            int[] before = new int[nums.length];
            for (int i = 0; i < nums.length; i++) {
                if (i != 0) {
                    beforeAll = beforeAll * nums[i - 1];
                }
                before[i] = beforeAll;
            }
            // 获取后面部分乘积
            int afterAll = 1;
            int[] after = new int[nums.length];
            for (int i = nums.length - 1; i >= 0; i--) {
                if (i != nums.length - 1) {
                    afterAll = afterAll * nums[i + 1];
                }
                after[i] = afterAll;
            }
            // 计算结果
            int[] answer = new int[nums.length];
            for (int i = 0; i < nums.length; i++) {
                answer[i] = before[i] * after[i];
            }
            return answer;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    3.提交结果截图

    在这里插入图片描述

    整理完毕,完结撒花~ 🌻

  • 相关阅读:
    Linux磁盘常见知识
    RDB是什么?·
    JMeter 面试题及答案整理,最新面试题
    Android Boring SSL
    电脑重装系统后我的电脑图标怎么添加到桌面上显示
    CSS3_字体图标
    参数传递及重定向
    mysql 常见锁的类型
    异步编程概览
    java代理Proxy以及实际PRC场景中的使用
  • 原文地址:https://blog.csdn.net/qq_33204709/article/details/134398064