力扣自己做题自己看238. 除了自身以外数组的乘积

📅 发布时间:2026/8/11 10:40:22
力扣自己做题自己看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)的额外空间复杂度内完成这个题目吗 出于对空间复杂度分析的目的输出数组不被视为额外空间。解答由于本题目要求不使用出发且空间复杂度为O(1)所以这一题我们只需要理解这个并构造代码原数组 [1 2 3 4] 左部分的乘积 1 1 1*2 1*2*3 右部分的乘积 2*3*4 3*4 4 1 结果 1*2*3*4 1*3*4 1*2*4 1*2*3*1class Solution(object): def productExceptSelf(self, nums): :type nums: List[int] :rtype: List[int] n len(nums) answer [0]*n answer[0] 1 for i in range(1,n): answer[i] answer[i-1] * nums[i-1] right 1 for i in reversed(range(n)): answer[i] answer[i] * right right * nums[i] return answer用两个循环就可以把这个题目解出来了第一个循环用来计算 i 的左部分的乘积第二个循环用来计算 i 的左右部分的乘积最后直接输出其中第二个循环用了一个right来缓存右部分乘积最后输出answer即可