news 2026/8/16 4:55:37

【leetcode复健-14】238. 除了自身以外数组的乘积 -

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【leetcode复健-14】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
  • 输入保证数组answer[i]32 位整数范围内

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

题目分析

这道题难点在于不能使用除法,因此我们需要转换一下思路。
从最终答案结果来看,我们其实可以把每一个数拆成两部分,左侧数之积与右侧数之积
即:

除自身以外的乘积 = 左边所有元素成绩 * 右边所有元素乘积

nums =[1,2,3,4]

答案:[24,12,8,6]
24 = (2*3*4)

12 = (1)*(3*4)

8 = (1*2)*(4)

6 = (1*2*3)

根据这个思路,我们可以分别正向、反向遍历数组,每次遍历累乘数字之积,最后将这两部分的数乘起来,就可以得到我们需要的答案

优化技巧

我们可以做到最多使用一个额外的列表,第一次遍历的同时我们就将累乘的结果顺带放到数组中,反向遍历时顺带乘回去,这样就可以使用一个额外列表完成所有操作。

空间优化更极端的情况就是利用原数组直接存放每个数字的累乘结果,再额外申请一个变量来存放数组中第一个/最后一个元素的值(这取决于你的遍历顺序),这种情况下额外空间压缩到
O(1)级别,是最优解

本题解仅进行了初步优化,额外空间为O(n)

代码展示

class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: n_len = len(nums) answer = [1] * n_len lefr_a = 1 right_a = 1 for i in range(n_len): answer[i] *= lefr_a lefr_a *= nums[i] for i in range(n_len)[::-1]: answer[i] *= right_a right_a *= nums[i] return answer
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 4:55:32

上海、安徽、浙江、江苏区域汽车零部件智能工厂服务商综合观察

一、行业现状&#xff1a;从“单点上系统”到“全局智能协同”当前&#xff0c;上海、安徽、浙江、江苏四地聚集了全国超过半数的汽车零部件生产企业&#xff0c;覆盖新能源底盘、热管理、制动系统、精密机加工、汽车电子等全品类赛道。然而&#xff0c;行业普遍面临一个尴尬的…

作者头像 李华
网站建设 2026/8/16 4:54:08

CentOS 7安装JDK 21完整指南:环境变量配置与生产环境实践

1. 项目概述&#xff1a;为什么在CentOS 7上安装JDK 21是个技术活&#xff1f; 最近在给一台老旧的测试服务器部署新的Java应用&#xff0c;环境是经典的CentOS 7。项目要求必须使用JDK 21&#xff0c;说是要用上最新的虚拟线程特性。我一开始觉得这还不是手到擒来&#xff1f…

作者头像 李华
网站建设 2026/8/16 4:53:03

网络通信协议与编程实践全解析

1. 网络通信基础概念解析网络通信是现代计算机系统之间进行数据交换的基础技术手段。简单来说&#xff0c;就是不同设备通过有线或无线方式连接起来&#xff0c;按照约定的规则传递信息。这就像人与人之间的对话需要共同语言一样&#xff0c;计算机之间通信也需要遵循特定的协议…

作者头像 李华
网站建设 2026/8/16 4:38:48

计算机必学---SQL

SQL 的力量在这个数据无处不在的时代&#xff0c;SQL 是与数据对话的通用语言。无论你是分析师、开发者还是产品经理&#xff0c;掌握 SQL 意味着拥有了独立从数据中获取洞见的能力。01SQL 为什么如此重要&#xff1f;&#x1f30d;通用语言&#xff0c;跨平台通用SQL 是关系型…

作者头像 李华