贪心算法学习 3 买卖股票的最佳时机 i ii

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

利润最高的情况就是 买入的和卖出的金额差距大(这个题目真的好简单啊 我开始还想着考虑天数 抱歉我没买过 但是反应过来就是找一个前面最小后面最大的就行 真是救命)

那就直接写代码吧(不动脑子)

复制代码
class Solution(object):
    def maxProfit(self, prices):
        #对于求最大最小值我还是以代码的形式展现 不用Min max了
        #要注意最大值和最小值的索引位置
        min= float('inf')#任何数都比它小
        max= float('-inf')#任何数都比它大
        min_index=-1
        max_index=-1
        for i in range(len(prices)):
            if min>prices[i]:
                min=prices[i]
                min_index=i
            if max<prices[i]:
                max=prices[i]
                max_index=i
        if min_index>=max_index:
            return 0
        return max-min
solution=Solution()
result=solution.maxProfit([7,1,5,3,6,4])
print(result)

然后俺就被打脸了 因为并不是一定要找最大值和最小值 就像 7 1 5 3 6 4最小值是1 最大值是7 那难道就不能在6的时候卖出去吗?当然可以了

再比如 最小值是最后一个 比如 2 6 1 我就不能在2的时候买入 6的时候卖出吗?当然可以 所以考虑的还是不够全面

如果最小的在前面 最大的在后面 这样当然是最好的 但是如果不是这样的 那么就需要找差值最大的 但是不能每个数字都往后面找比它大的 去记录最大差值 两个for循环绝对不行

那么还能有什么思路呢?7 1 5 3 6 4 首先是7 然后是1 1 比7小 换为1 下面是5 比1大 差值是 4 下面是3 比1大 差值是2 下面是6 比1大 差值是5 下面是4 比1小 差值是3

再看[7,6,4,3,1] 一直到1 都是1小 所以是不是使用一个最小值进行记录 遇到下一个数字 如果这个数字比最小值小 更新最小值 如果不是比最小值小 计算差值 看最大差值是否需要更新(这个思路是我看别人的思路 不是我自己想出来的 我自己想出来的就是两个for循环 但是我不用写都能猜出来是超时的) 那么我们来写代码

思路就是:记录最小值 当前值小于最小值 更新最小值 当前值大于等于最小值 记录差值 看是否更新差值 好的我们来写代码

复制代码
class Solution(object):
    def maxProfit(self, prices):
        #对于求最大最小值我还是以代码的形式展现 不用Min max了
        #要注意最大值和最小值的索引位置
        min= prices[0]#任何数都比它小
        max_diff=0
        for i in range(1,len(prices)):
            if prices[i]<min:
                min=prices[i]
            else:
                cur_diff=prices[i]-min
                if cur_diff>max_diff:
                    max_diff=cur_diff
        return max_diff
solution=Solution()
result=solution.maxProfit([7,1,5,3,6,4])
print(result)

真的最重要的还是思路 更新最低价 或者是更新最大利润

如果喜欢这个帖子 欢迎点赞收藏

相关推荐
尘似鹤9 分钟前
微信小程序学习(三)
学习
尘似鹤9 分钟前
微信小程序学习(二)
学习·微信小程序·小程序
MMjeaty25 分钟前
数据结构——栈和队列
数据结构·算法
机器学习之心6 小时前
多目标鲸鱼优化算法(NSWOA),含46种测试函数和9个评价指标,MATLAB实现
算法·matlab·多目标鲸鱼优化算法·46种测试函数·9个评价指标
max5006006 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
王哥儿聊AI8 小时前
Lynx:新一代个性化视频生成模型,单图即可生成视频,重新定义身份一致性与视觉质量
人工智能·算法·安全·机器学习·音视频·软件工程
手握风云-9 小时前
优选算法的寻踪契合:字符串专题
算法
闭着眼睛学算法9 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od
IT古董9 小时前
【第五章:计算机视觉-项目实战之目标检测实战】2.目标检测实战:中国交通标志检测-(2)中国交通标志检测数据格式转化与读取
算法·目标检测·计算机视觉
MobotStone9 小时前
LLM 采样入门到进阶:理解与实践 Top-K、Top-P、温度控制
算法