LeetCode C++ 剑指 Offer 63. 股票的最大利润【Dynamic Programming】中等
发布日期:2021-07-01 02:58:43 浏览次数:2 分类:技术文章

本文共 667 字,大约阅读时间需要 2 分钟。

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

示例 1:

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

示例 2:

输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

限制: 0 <= 数组长度 <= 10^5


解法 动态规划

做过的题目:

class Solution {
public: int maxProfit(vector
& prices) {
//对当前的股票价格p,买卖它获得的最大利润等于p-之前的最低价格q int ans = 0, minPrice = INT_MAX; for (const int &v : prices) {
ans = max(ans, v - minPrice); minPrice = min(minPrice, v); } return ans; }};

运行效率如下:

执行用时:8 ms, 在所有 C++ 提交中击败了94.02% 的用户内存消耗:13 MB, 在所有 C++ 提交中击败了30.78% 的用户

转载地址:https://memcpy0.blog.csdn.net/article/details/111714397 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LeetCode C++ 剑指 Offer 47. 礼物的最大价值【Dynamic Programming】中等
下一篇:LeetCode C++ 剑指 Offer 62. 圆圈中最后剩下的数字【Linked List/Math】简单

发表评论

最新留言

不错!
[***.144.177.141]2024年05月03日 07时31分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章