(2022.08.27 Sat)
- 238 除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
请不要使用除法,且在 O(n) 时间复杂度内完成此题。
思路:两次遍历,分别从头和尾开始遍历,第一次遍历,answer[i]保存的是nums[0]到nums[i-1]的乘积,第二次遍历answer[i]= answer[i] * tmp,其中的tmp是nums[i+1]到nums[len(nums)-1]的乘积。
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
tmp = 1
answer = [None] * len(nums)
for i in range(len(nums)):
if i == 0:
answer[i] = 1
continue
answer[i] = nums[i-1] * answer[i-1]
for i in range(len(nums)-1, -1, -1):
answer[i] *= tmp
tmp *= nums[i]
return answer
Reference
1 leetcode
网友评论