Beats 80% of runtime, uses a lot of memory. multiples loops is still O(n)

This commit is contained in:
Jacob Delgado 2023-08-17 02:04:49 -07:00
parent c4be189687
commit ade978c89c

View File

@ -1,19 +1,43 @@
from functools import reduce
import operator
# from functools import reduce
# import operator
# def productExceptSelf(nums):
# """
# :type nums: List[int]
# :rtype: List[int]
# """
# final = []
# for x in range(len(nums)):
# temp = nums[0]
# del nums[0]
# final.append(reduce(operator.mul, nums))
# # print(nums)
# nums.append(temp)
# # print(final)
# return final
# print(productExceptSelf([1,2,3,4]))
def productExceptSelf(nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
final = []
for x in range(len(nums)):
temp = nums[0]
del nums[0]
final.append(reduce(operator.mul, nums))
# print(nums)
nums.append(temp)
# print(final)
return final
print(productExceptSelf([1,2,3,4]))
n = len(nums)
prefix_products = [1] * n
suffix_products = [1] * n
result = [1] * n
prefix_product = 1
for i in range(n):
prefix_products[i] = prefix_product
prefix_product *= nums[i]
suffix_product = 1
for i in range(n - 1, -1, -1):
suffix_products[i] = suffix_product
suffix_product *= nums[i]
for i in range(n):
result[i] = prefix_products[i] * suffix_products[i]
return result
print(productExceptSelf([1, 2, 3, 4]))