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

LeetCode热题100—— 238. 除自身以外数组的乘积

https://leetcode.cn/problems/product-of-array-except-self/description/?envType=study-plan-v2&envId=top-100-liked

给你一个整数数组 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) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为 额外空间。)

思路

index01234
numsa₀a₁a₂a₃a₄
L1a₀a₀ a₁a₀ a₁ a₂a₀ a₁ a₂ a₃
a₁ a₂ a₃ a₄a₂ a₃ a₄a₃ a₄a₄1R
SL[0] * R[0] = 1 * a₁ a₂ a₃ a₄L[1] * R[1] = a₀ a₂ a₃ a₄L[2] * R[2] = a₀ a₁ a₃ a₄L[3] * R[3] = a₀ a₁ a₂ a₄L[4] * R[4] = a₀ a₁ a₂ a₃ *1

核心思想

【前缀积】 乘以 【后缀积】即是缺少的那个元素

class Solution {public int[] productExceptSelf(int[] nums) {int length = nums.length;int[] L = new int[length];L[0] = 1;for (int i = 1; i < length; i++) {L[i] = nums[i - 1] * L[i - 1];}int r = 1;for (int i = length - 1; i >= 0; i--) {L[i] = L[i] * r;r = nums[i] * r;}return L;}
}
http://www.dtcms.com/a/284695.html

相关文章:

  • Pygame创建窗口教程 - 从入门到实践 | Python游戏开发指南
  • 小白学Python,网络爬虫篇(1)——requests库
  • java Integer怎么获取长度
  • 【Jmeter】报错:An error occured:Unknown arg
  • 3.PCL点云合并
  • 为什么选择Selenium自动化测试?
  • 接口黑洞?破!安全堡垒?筑!冰火炼狱?战!MES7114W终极掌控
  • 学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)
  • 三、CV_VGGnet
  • 栈和队列的实现,咕咕咕
  • CTF之栅栏密码的传统型、W型与偏移量
  • ota之.加密算法,mcu加密方式
  • 开源 python 应用 开发(八)图片比对
  • Android wifi简单白名单实现逻辑
  • 20250717在荣品的PRO-RK3566开发板的Android13系统下解决点屏出现问题unsupport command data type: 217
  • 通俗的解释一下以太网中的端口号
  • 流式数据处理实战:用状态机 + scan 优雅过滤 AI 响应中的 `<think>` 标签
  • 深入理解CSS定位:绝对定位的包含块机制
  • 退休时间计算器,精准预测养老时间
  • 项目实战(18)-POE分离器
  • Spring底层原理(一)核心原理
  • RCU机制及常见锁的理解
  • 深入理解Java中的Map.Entry接口
  • 【数据结构】单链表的实现
  • python(one day)——春水碧于天,画船听雨眠。
  • Python 网络爬虫 —— requests 库和网页源代码
  • 网络爬虫的介绍
  • Kafka 配置参数详解:ZooKeeper 模式与 KRaft 模式对比
  • 【Android】Span的使用
  • 深入了解linux系统—— 信号的捕捉