• leetcode1352


     1 class ProductOfNumbers:
     2     def __init__(self):
     3         self.matrix = []
     4         self.preproducts = []
     5         self.length = 0
     6         self.zeros = set()
     7 
     8     def add(self, num: int) -> None:
     9         self.matrix.append(num)
    10         if num == 0:
    11             self.zeros.add(self.length)
    12         if self.length == 0:
    13             self.preproducts.append(num)
    14         else:
    15             pre = self.preproducts[-1]
    16             if pre == 0:
    17                 self.preproducts.append(num)
    18             else:
    19                 self.preproducts.append(num * pre)
    20         self.length += 1
    21 
    22     def getProduct(self, k: int) -> int:
    23         j = self.length - 1
    24         i = self.length - k - 1
    25         if j - i  == 1:
    26             return self.matrix[j]
    27         for x in self.zeros:
    28             if x > i and x <= j:
    29                 return 0
    30         if i < 0:
    31             return self.preproducts[j]
    32         return self.preproducts[j] // self.preproducts[i] if self.preproducts[i] != 0 else self.preproducts[j]
  • 相关阅读:
    设计模式之装饰者模式
    每天一点点
    生财有道
    地图的移动和缩放
    钱分割
    位运算
    ref和out
    使用startCoroutine制定倒计时
    静态类和单例类
    Awake和Start
  • 原文地址:https://www.cnblogs.com/asenyang/p/12316770.html
Copyright © 2020-2023  润新知