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):
|
||||
"""
|
||||
: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]))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user