44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
def maxProfit(prices):
|
|
"""
|
|
:type prices: List[int]
|
|
:rtype: int
|
|
"""
|
|
# Use iterative loop to look for the greatest profit, not the only profit after the lowest
|
|
# lowest = min(prices)
|
|
# if lowest == prices[len(prices)-1]:
|
|
# print('no profit')
|
|
# return 0
|
|
# for i in range(len(prices)):
|
|
# if lowest == prices[i]:
|
|
# k = i+1
|
|
# # print(f'k is {k}')
|
|
# profit = max(prices[k:]) - lowest
|
|
# print(profit)
|
|
# return profit
|
|
|
|
# Code Timed out
|
|
# profit = []
|
|
# for i in range(len(prices)):
|
|
# for j in range(i+1, len(prices)):
|
|
# if prices[i] < prices[j]:
|
|
# profit.append(prices[j] - prices[i])
|
|
# # print(max(profit))
|
|
# if not profit:
|
|
# return 0
|
|
# return max(profit)
|
|
|
|
# Code with faster Implementation
|
|
min_price = prices[0] # Track the minimum price seen so far
|
|
max_profit = 0 # Track the maximum profit
|
|
|
|
for price in prices:
|
|
# print(f'price is {price}')
|
|
# print(f'MinPrice: {min_price} or {price}')
|
|
# print(f'MaxProfit: {max_profit} or [{price} - {min_price} = {max(max_profit, price - min_price)}]')
|
|
min_price = min(min_price, price) # Update the minimum price
|
|
max_profit = max(max_profit, price - min_price) # Update the maximum profit
|
|
return max_profit
|
|
|
|
# maxProfit([7,1,5,3,6,4])
|
|
maxProfit([7,6,4,3,1])
|
|
# maxProfit([2,4,1]) |