首页 > 其他分享 >121. 买卖股票的最佳时机 ----- 动态规划、历史最小一次遍历

121. 买卖股票的最佳时机 ----- 动态规划、历史最小一次遍历

时间:2022-11-16 09:55:21浏览次数:52  
标签:minprices int price maxProfit 121 遍历 ----- prices 利润

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

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

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

 

示例 1:

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

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

提示:

1 <= prices.length <= 105
0 <= prices[i] <= 104

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

找历史最小:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        int maxProfit = 0;
        int minprices = prices[0];
        for ( auto && price : prices) {
            if (price < minprices) {
                minprices = price;
            }
            else if (price - minprices > maxProfit){
                maxProfit = price - minprices;
            }
        }
        return maxProfit;
    }
};

动态规划:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int maxProfit = 0, minprices;
        for (auto && price : prices) {
            maxProfit = max(maxProfit, price-minprices);
            minprices = min(minprices, price); 
        }
        return maxProfit;
    }
};

 

 

标签:minprices,int,price,maxProfit,121,遍历,-----,prices,利润
From: https://www.cnblogs.com/slowlydance2me/p/16894882.html

相关文章

  • java对接新中新电子:QKQ-A16Q (一)
    1.新中新电子:QKQ-A16Q    参考资料:新中新电子官网:http://www.synjones.com/service.html#part_oneUSB:\验证_USB_V1.2 ......
  • C++中::和:, .和->的作用和区别
    符号::和:的作用和区别::是作用域运算符,A::B表示作用域A中的-名称B,A可以是名字空间、类、结构;类作用域操作符“::”指明了成员函数所属的类。如:M::f(s)就表示f(s)是......
  • Linux-文本过滤与处理
    1.cat指令:连接指令并显示内容cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。1.1语法cat[-AbeEnstTuv][--help][--version]fileName1.2参......
  • Spring--自动装配
    自动装配所谓自动装配,就是在不再定义property的引用情况下,直接能够调用到文件里面的函数,、主要是通过在bean标签里面加入一个autowire属性,在里面会有多种类型。其中,byTyp......
  • Navicat premium 15安装+激活-九五小庞
    下载安装包:https://wwz.lanzoue.com/b021z9k1e密码:7pm1 NavicatPremium15安装教程:一、解压后,双击安装包 ​二、点击下一步​三、勾选同意 ,点击下一步......
  • ASP.NET Core教程-Configuration(配置)-文件上传
    更新记录转载请注明出处:2022年11月16日发布。2022年11月12日从笔记迁移到博客。文件上传基础文件上传安全措施(Securityconsiderations)将文件上传到专用文件上......
  • python课本学习-第五章
    一、列表的概念1、列表的创建列表是由一组任意类型的值组合而成的序列,组成列表的值称为元素,每个元素之间用逗号隔开。列表中的元素是可变的#列表类似于c++中的数组,数......
  • 775. 全局倒置与局部倒置 ----- 题目包含关系求补集
    给你一个长度为n的整数数组nums,表示由范围[0,n-1]内所有整数组成的一个排列。全局倒置的数目等于满足下述条件不同下标对(i,j)的数目:0<=i<j<nnums[i]......
  • Python - request 报错:raise RemoteDisconnected("Remote end closed connection with
    2022-11-1521:46:20,261INFO[get_data.py(get_product_mode:46)]-当前page======>:255Traceback(mostrecentcalllast):File"D:\jlc_auto_test\fa_search_tes......
  • javascript-代码随想录训练营day1
    704.二分查找力扣题目链接:https://leetcode.cn/problems/binary-search/题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums......