lintcode:买卖股票的最佳时机 Ⅰ
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
样例
给出一个数组样例 [3,2,3,1,2], 返回 1
class Solution:
"""
@param prices: Given an integer array
@return: Maximum profit
"""
def maxProfit(self, prices):
# write your code here
# 80% 超时
# if not prices:
# return 0
# target = 0
# for i in range(len(prices)):
# for j in range(i + 1, len(prices)):
# if prices[i] < prices[j]:
# target = max(prices[j] - prices[i], target)
# return target
if not prices:
return 0
lowest, cur = prices[0], 0
for i in range(1, len(prices)):
lowest = min(lowest, prices[i]) #找到当前最小值
cur = max(cur, prices[i] - lowest) #当前值减最小值,取最大
return cur