当前位置: 首页 > article >正文

[数组基础] 0238. 除自身以外数组的乘积

文章目录

      • 1. 题目链接
      • 2. 题目大意
      • 3. 示例
      • 4. 解题思路
      • 5. 参考代码

1. 题目链接

0238. 除自身以外数组的乘积



2. 题目大意

描述:给定一个数组 nums。

要求:返回数组 answer,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

说明

  • 题目数据保证数组 nums 之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内。
  • 请不要使用除法,且在 O(n) 时间复杂度内解决问题。
  • 进阶:在 O(1) 的额外空间复杂度内完成这个题目。
  • 2 ≤ nums.length ≤ 105。
  • −30 ≤ nums[i] ≤ 30。

3. 示例

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

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


4. 解题思路

  1. 构造一个答案数组 res,长度和数组 nums 长度一致。
  2. 先从左到右遍历一遍 nums 数组,将 nums[i] 左侧的元素乘积累积起来,存储到 res 数组中。
  3. 再从右到左遍历一遍,将 nums[i] 右侧的元素乘积累积起来,再乘以原本 res[i] 的值,即为 nums 中除了 nums[i] 之外的其他所有元素乘积。

5. 参考代码

public class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] answer = new int[n];
        
        // 第一步:计算每个元素的前缀乘积
        answer[0] = 1;
        for (int i = 1; i < n; i++) {
            answer[i] = answer[i - 1] * nums[i - 1];
        }
        
        // 第二步:计算后缀乘积并与前缀乘积相乘
        int suffixProduct = 1;
        for (int i = n - 1; i >= 0; i--) {
            answer[i] *= suffixProduct;
            suffixProduct *= nums[i];
        }
        
        return answer;
    }
}

http://www.kler.cn/a/374410.html

相关文章:

  • 数据分析篇001
  • 深入理解 PyTorch 的 view() 函数:以多头注意力机制(Multi-Head Attention)为例 (中英双语)
  • dockerfile文档编写(1):基础命令
  • 【解决报错】AttributeError: ‘NoneType‘ object has no attribute ‘group‘
  • AppAgent 源码 (xml 解析)
  • C语言结构体位定义(位段)的实际作用深入分析
  • 「Mac畅玩鸿蒙与硬件11」鸿蒙UI组件篇1 - Text 和 Button 组件详解
  • 音频剪辑怎么做?盘点10款高效的音频剪辑工具
  • Android 利用socket 来实现 自动升级apk
  • linux 中文实用型手册 基于RHEL(红帽系)
  • 三网折扣话费充值接口对接详细步骤?
  • 速盾:海外CDN高防解析.提升网站安全与速度
  • 在 .NET 8 Web API 中实现 Entity Framework 的 Code First 方法
  • 【算法系列-二叉树】对称翻转二叉树
  • docker安装、设置非sudo执行、卸载
  • CesiumJS 案例 P15:检测标记、鼠标点击移动标记、鼠标拖动标记
  • CSS Text(文本)
  • HTML CSS
  • JavaEE初阶---网络原理/UDP服务器客户端程序
  • C# 第一阶段(桌面软件)
  • qt QProgressBar详解
  • 10.31学习
  • 【golang/navmesh】使用recast navigation进行寻路
  • Node.js UDP通信 dgram 组播
  • canvas自定义文本排列方法 + 自定义花字应用案例
  • 使用Python和OCR技术实现自动化办公:图片转文字