LeetCode 121. 买卖股票的最佳时机

本文介绍了一种使用动态规划解决数组中最大利润问题的方法,通过记录每个时刻的最小价格,快速找到当前元素与之前最小值的差值,从而避免了重复查找。举例说明了如何在nums=[7,1,5,3,6,4]中找到最大利润。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  题目

我的解答 

暴力求解,明显超时。

 比较好的答案

方法:动态规划(或者叫贪心?)

思路是:用minprice记录0~i所有元素的最小值,maxprofit记录到目前i为止,最大的利润是多少。

相比暴力解法,这里的技巧就在于记录这个minprice,暴力解法每次都需要找i之前的最小元素,而贪心解法是用新进来的元素和之前的最小值比较,如果新进来的元素更小,就更新minprice

nums = [7,1,5,3,6,4]
n = len(nums)
min_price = nums[0]
max_profit = 0
for i in range(1,n):
    min_price = min(min_price,nums[i])
    max_profit = max(max_profit,nums[i]-min_price)
print("min_price=",min_price)
print("max_profit=",max_profit)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值