• [LeetCode]Best Time to Buy and Sell Stock


    /**********************************************************************************
    * Say you have an array for which the ith element is the price of a given stock on day i.
    *
    * If you were only permitted to complete at most one transaction (ie, buy one and sell
    * one share of the stock), design an algorithm to find the maximum profit.
    **********************************************************************************/

    假定有一个数组,第i个元素代表第i天的股票价格。在只允许一次买卖交易的条件下,能够得到的最大收益是多少?

    动态规划的算法思路:买入点初始定为第一个元素,遇到比买入点更低的点则更新买入点,遇到使利润更大的卖出点则更新利润。由于max一直保持着当前的最大利润,所以不用担心更新买入点后卖不出前面那么好的价钱。

    class Solution {
    public:
        int maxProfit(vector<int>& prices) {
        int low = 0;
        int max = 0;    //因为可以选择不买,所以利润至少为0
        for(int i=0;i<prices.size();i++)
        {
            //找到一个比当前最低点还要低的点,可直接替换
            //可以替换的理由是:前面i-1个点中买卖能得到的最大利润已经keep了
            //对于后面的最高点,该点亦是前面最低的买入价格
            if(prices[i]-prices[low]<=0)
            {
                low = i;
            }
            //如果当前点卖出得到的利润更大,更新max值
            if(prices[i]-prices[low]>max)
            {
                max = prices[i] - prices[low];
            }
        }
        return max;
        }
    };
  • 相关阅读:
    阅读 video in to axi4-stream v4.0 笔记
    python 字符串操作
    python 基本语句
    Python 算术运算符
    芯片企业研报阅读
    量化分析v1
    基于MATLAB System Generator 搭建Display Enhancement模型
    System Generator 生成IP核在Vivado中进行调用
    FPGA 中三角函数的实现
    System Generator 使用离散资源
  • 原文地址:https://www.cnblogs.com/SolarLau/p/4588060.html
Copyright © 2020-2023  润新知