zoukankan      html  css  js  c++  java
  • Array of products

    refer to: https://www.algoexpert.io/questions/Array%20Of%20Products


    Problem Statement

    Sample input

    Analysis

    approach 1: brute force, two full loops to iterate the array, for each current index, calculate the product except the current index value

    code. time complexity: O(N^2).  space complexity: O(N)

    def arrayOfProducts(array):
        # Write your code here.
        product = [1 for i in range(len(array))]
        for i in range(len(array)):
            res = 1
            for j in range(len(array)):
                if i != j:
                    res *= array[j]
            product[i] = res
        return product     

    approach 2: calculate the leftProducts and the rightProducts seperately, then multiple the right and left element of the current index

    code.  time complexity: O(N).  space complexity: O(N)

    def arrayOfProducts(array):
        # Write your code here.
        left = [1 for i in range(len(array))]
        right = [1 for i in range(len(array))]
        res = [1 for i in range(len(array))]
        
        leftProduct = 1
        rightProduct = 1
        for i in range(len(array)):
            left[i] = leftProduct
            leftProduct *= array[i]
            
        for i in reversed(range(len(array))):
            right[i] = rightProduct
            rightProduct *= array[i]
            
        for i in range(len(array)):
            res[i] = right[i] * left[i]
        return res

    approach 3: avoid store the extra leftProducts and rightProducts, only update the products array

    code.  time complexity: O(N).  space complexity: O(N)

    def arrayOfProducts(array):
        # Write your code here.
        product = [1 for i in range(len(array))]
        
        leftProduct = 1
        rightProduct = 1
        
        for i in range(len(array)):
            product[i] = leftProduct
            leftProduct *= array[i]
            
        for i in reversed(range(len(array))):
            product[i] *= rightProduct
            rightProduct *= array[i]
            
        return product
  • 相关阅读:
    Uva 1636 决斗
    数论初步
    Gym 100169A 最短路
    Uva 12169 不爽的裁判 模运算
    Uva 11582 巨大的斐波那契数 模运算
    Uva 10791 最小公倍数的最小和 唯一分解定理
    Uva 10375 选择与除法 唯一分解定理
    poj 3485 区间选点
    第二届团体程序设计天梯赛
    Uva 12657 双向链表
  • 原文地址:https://www.cnblogs.com/LilyLiya/p/15025857.html
Copyright © 2011-2022 走看看