1. leetcode每日一题
leetcode每日一题,超时了很多次,看题解才通过(/(ㄒoㄒ)/~~)
方法1:遍历列表
从前往后遍历列表,同步更新最小价格和最大利润
就很妙,但是我自己目前很难想到
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
min_price = prices[0]
max_profit = 0
for price in prices:
min_price = min(min_price,price)
max_profit = max(max_profit,price-min_price)
return max_profit
方法2:动态规划
方法1实际上由动态规划演变而来(不甚理解,之后再看)
class Solution:
def maxProfit(self, prices: List[int]) -> int:
n = len(prices)
if n == 0: return 0 # 边界条件
dp = [0] * n
minprice = prices[0]
for i in range(1, n):
minprice = min(minprice, prices[i])
dp[i] = max(dp[i - 1], prices[i] - minprice)
return dp[-1]