【力扣】238. 除自身以外数组的乘积

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
  • 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内

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

解题方法

  • C
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* productExceptSelf(int* nums, int numsSize, int* returnSize) {

    int left[numsSize], right[numsSize]; // 定义两个数组,表示 nums 左右两边的元素乘积
    int* result = (int*)malloc(sizeof(int) * numsSize); // 定义存储结果的数组
    int i = 0;

    /* 计算 nums[i] 左边元素乘积 */
    left[0] = 1;
    for (i = 1; i < numsSize; i++) {
        left[i] = left[i - 1] * nums[i - 1];
    }

    /* 计算 nums[i] 右边元素乘积 */
    right[numsSize - 1] = 1;
    for (i = numsSize - 2; i >= 0; i--) {
        right[i] = right[i + 1] * nums[i + 1];
    }

    /* 计算除 nums[i] 自身之外的乘积 */
    for (i = 0; i < numsSize; i++) {
        result[i] = left[i] * right[i];
    }
    *returnSize = numsSize;
    return result;
}

复杂度分析
时间复杂度为 O(N),其中 N 指的是数组 nums 的大小。
空间复杂度为 O(N),其中 N 指的是数组 nums 的大小。

相关推荐

  1. 238. 自身以外乘积

    2024-04-09 12:26:03       41 阅读
  2. 100】238.自身以外乘积

    2024-04-09 12:26:03       64 阅读
  3. - 自身以外乘积

    2024-04-09 12:26:03       33 阅读
  4. 【Leetcode】238.自身以外乘积

    2024-04-09 12:26:03       68 阅读
  5. 238. 自身以外乘积

    2024-04-09 12:26:03       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 12:26:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 12:26:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 12:26:03       82 阅读
  4. Python语言-面向对象

    2024-04-09 12:26:03       91 阅读

热门阅读

  1. npm的一些经常使用的命令

    2024-04-09 12:26:03       36 阅读
  2. CSS变换

    CSS变换

    2024-04-09 12:26:03      31 阅读
  3. 7.网络编程-安全

    2024-04-09 12:26:03       36 阅读
  4. Ubuntu安装Opencv + opencv_contrib(v4.9.0)

    2024-04-09 12:26:03       37 阅读
  5. node.js常用命令

    2024-04-09 12:26:03       27 阅读
  6. 在 Linux 上使用 Git LFS

    2024-04-09 12:26:03       31 阅读
  7. x264 8x8 水平预测汇编分析

    2024-04-09 12:26:03       39 阅读