50. Product of Array Exclude Itself

題目

https://www.lintcode.com/problem/product-of-array-exclude-itself/description?_from=ladder&&fromId=2

實現

  1. 從右到左遍歷數組算出 suffix_product 並存在一個數組裏
  2. 定義一個 prefix_product 用於計算當前 i - 1 個元素相乘的值
  3. 每次計算 B[i] 的時候,只需要 prefix_product * suffix_products[i + 1] 就可以了

代碼

class Solution:
    """
    @param: nums: Given an integers array A
    @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1]
    """
    def productExcludeItself(self, nums):
        if nums is None:
            return []

        length = len(nums)

        B = [0 for i in range(length)]

        suffix_products = [0 for i in range(length + 1)]
        suffix_products[length] = 1

        # Compute suffix products
        for i in range(length - 1, 0, -1):
            suffix_products[i] = suffix_products[i + 1] * nums[i]

        prefix_product = 1
        for i in range(length):
            B[i] = prefix_product * suffix_products[i + 1]
            prefix_product *= nums[i]

        return B

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章