算法题整理, 2022-08-27

(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

你可能感兴趣的:(算法题整理, 2022-08-27)