Beats 80% of runtime, uses a lot of memory. multiples loops is still O(n)
This commit is contained in:
parent
c4be189687
commit
ade978c89c
@ -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]))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user