Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >121. 买卖股票的最佳时机(动态规划)

121. 买卖股票的最佳时机(动态规划)

作者头像
杨鹏伟
发布于 2022-06-10 05:52:11
发布于 2022-06-10 05:52:11
16400
代码可运行
举报
文章被收录于专栏:ypwypw
运行总次数:0
代码可运行

题目:买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

示例 1: 输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

思路:我们设ans为最终的答案,为最大值。 则有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ans = max(ans,prices[i] - 前i-1天中的最小值)。

我们设前i-1天最小值为res 则有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
res = min(res,prices[i]);

如此O(N)的时间内,我们遍历一遍数组便可以得到最大利润

code

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int ans=0;
        int res=prices[0];
        for(int i=1;i<prices.size();i++){
            ans = max(ans,prices[i]-res);//res代表的是i-1天中最小的
            res = min(res,prices[i]);
        }
        return ans;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
leetcode 题解 | 121. 买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
ACM算法日常
2018/08/07
5810
leetcode 题解 | 121. 买卖股票的最佳时机
LeetCode-121-买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
benym
2022/07/14
1710
LeetCode 121. 买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
freesan44
2020/03/20
3290
每天一道leetcode121-买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。
乔戈里
2019/01/11
9930
数据结构002:买卖股票的最佳时机
结合题意,想获取高额回报,肯定是低买高卖,那我们首先想到的是找出数组中的最小值,当天买入,找出最大值,当天卖出,岂不美哉,但是两个字立马把我们拉回现实,如果数组的最大值在最小值前面呢,不就不符合实际情况了吗。那我们该怎么搞?突然想到这道题与我们之前的最大子数组和的内容有些类似,那解题思路是否类似呢?我们套用一下它的思路,找软柿子捏,先从短的数组开始分析(以{a, b, c, d, e}为例),既然要从短的数组分析,为了找出规律,我们将$f(i)$记为第$i$天卖出股票时的最大利润。那么,我们需要在0,i-1的范围内找到最小值minPrice_{[0,i)} ,则有f(i) = prices[i]-minPrice 。
艰默
2022/12/06
4910
数据结构002:买卖股票的最佳时机
算法简单题,吾辈重拳出击 - 买卖股票的最佳时机
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
掘金安东尼
2022/09/19
3530
算法简单题,吾辈重拳出击 - 买卖股票的最佳时机
打卡群刷题总结0917——买卖股票的最佳时机
链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock
木又AI帮
2020/09/21
3330
【每日leetcode】7.买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
一条coding
2021/08/12
2820
【每日leetcode】7.买卖股票的最佳时机
LeetCode题组:第121题-买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
K同学啊
2020/04/10
3640
Leetcode 121. 买卖股票的最佳时机 (DP,模拟)
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
glm233
2020/09/28
3130
LeetCode 121. 买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票), 设计一个算法来计算你所能获取的最大利润。
Michael阿明
2022/11/26
4180
LeetCode 121. 买卖股票的最佳时机
leetcode刷题(34)——121. 买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
老马的编程之旅
2022/06/22
1920
121. 买卖股票的最佳时机
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
张伦聪zhangluncong
2022/10/26
1830
​LeetCode刷题实战121:买卖股票的最佳时机
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock
程序员小猿
2021/01/19
2810
​LeetCode刷题实战121:买卖股票的最佳时机
golang刷leetcode 技巧(65)买卖股票的最佳时机(I,II)
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
golangLeetcode
2022/08/02
3250
LeetCode-121. 买卖股票的最佳时机(java)
       拿到这题,其实是有点气愤的,虽然我玩的是基金而不是股票,但是也是一样的低买高卖原则嘛,想从中捞点高低差,但是最近股市是真的一塌糊涂,亏死了。这不刚好又刷到这道题,买卖股票啥时候时机最好,这市场变化莫测,压根没这道题这么悠哉好吧。如下我就来讲讲这道题是如何实现股票的买卖最佳时机。
bug菌
2023/05/27
3360
LeetCode-121. 买卖股票的最佳时机(java)
【题目】买卖股票的最佳时机
原文地址: https://copyfuture.com/blogs-details/2020011113393672457wxpb9gxgbqzvf
谙忆
2021/01/21
2720
leetcode之买卖股票的最佳时机
这里用第一天的价格作为最小值,以0作为最大值,然后从第二天开始遍历,计算每天最大获利及股票的最小值,最后得出最大收益。
code4it
2020/11/25
3420
leetcode之买卖股票的最佳时机
动态规划:买卖股票的最佳时机
题目链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
代码随想录
2021/03/16
7890
动态规划:买卖股票的最佳时机
121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
名字是乱打的
2021/12/23
2310
相关推荐
leetcode 题解 | 121. 买卖股票的最佳时机
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验