打败算法 —— 买卖股票的最佳时机
本文参考
出自LeetCode上的题库 —— 买卖股票的最佳时机
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
买卖股票问题
给定一个数组 prices,它的第 i 个元素prices[i] 表示一支给定股票第 i 天的价格
选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票
返回你可以从这笔交易中获取的最大利润;如果你不能获取任何利润,返回 0
示例1:
输入: [7, 1, 5, 3, 6, 4]
输出: 5
示例2:
输入:[7, 6, 4, 3, 1]
输出:0
解题思路
利用滑动窗口的思想,基本解题步骤为:
1、初始化左右指针的下标索引,索引闭区间为一个窗口
2、不断地增加指针扩大窗口,判断,直到
3、此时,停止移动指针,移动指针到指针的位置
4、重复第2和第3步,直到指针到达列表的尽头
滑动窗口解法
class Solution:
def max_profit(self, prices: List[int]) -> int:
left = right = 0
ans = -1
while right < len(prices):
while right < len(prices) and prices[left] <= prices[right]:
if ans < prices[right] - prices[left]:
ans = prices[right] - prices[left]
right += 1
left = right
return ans
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)