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): def productExceptSelf(nums):
""" n = len(nums)
:type nums: List[int] prefix_products = [1] * n
:rtype: List[int] suffix_products = [1] * n
""" result = [1] * n
final = []
for x in range(len(nums)): prefix_product = 1
temp = nums[0] for i in range(n):
del nums[0] prefix_products[i] = prefix_product
final.append(reduce(operator.mul, nums)) prefix_product *= nums[i]
# print(nums)
nums.append(temp) suffix_product = 1
# print(final) for i in range(n - 1, -1, -1):
return final suffix_products[i] = suffix_product
print(productExceptSelf([1,2,3,4])) 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]))