当前位置:网站首页>leetcode:剑指 Offer 66. 构建乘积数组【前后缀积的应用】

leetcode:剑指 Offer 66. 构建乘积数组【前后缀积的应用】

2022-06-12 06:34:00 白速龙王的回眸

在这里插入图片描述

分析

因为不能用除号
所以要考虑存一下前后缀积
然后对头尾特判,其他正常计算即可
注意None和【】

ac code

class Solution:
    def constructArr(self, a: List[int]) -> List[int]:
        if not a:
            return []
        n = len(a)
        b = a[::-1]
        preMul, postMul = [0] * n, [0] * n

        preMul[0] = a[0]
        for i in range(1, n):
            preMul[i] = preMul[i - 1] * a[i]
        
        postMul[0] = b[0]
        for i in range(1, n):
            postMul[i] = postMul[i - 1] * b[i]
        
        ans = []
        for i in range(n):
            if i == 0:
                ans.append(postMul[n - 2])
            elif i == n - 1:
                ans.append(preMul[n - 2])
            else:
                ans.append(preMul[i - 1] * postMul[n - i - 2])
        
        return ans

总结

前后缀积

原网站

版权声明
本文为[白速龙王的回眸]所创,转载请带上原文链接,感谢
https://bridge-killer.blog.csdn.net/article/details/125240805