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
  • 相关阅读:
    PHP加速器eAccelerator安装
    WCF
    WCF
    WCF
    前端学习书籍推荐
    问题集录01--java对list列表进行排序
    基础知识:字符编码
    基础知识:if条件、while循环、for循环 相关练习
    基础知识:语言、编程、计算机组成、cpu、存储器
    视图 索引 存储过程
  • 原文地址:https://www.cnblogs.com/LilyLiya/p/15025857.html
Copyright © 2011-2022 走看看