刷题之买股票的最佳时机(leetcode)

买股票的最佳时机

在这里插入图片描述
动态规划入门题。

最简单的模拟式解法:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //也可以换一种思路,因为只交易一次,那么找出股票最便宜的时候买入,最贵的时候卖出,最大利润为(该天的股价-前面天数中最小的股价)
        int profit=0;
        int cost=prices[0];
        for(int i=1;i<prices.size();i++)
        {
            profit=max(prices[i]-cost,profit);
            cost=min(prices[i],cost);
        }
        return profit;
    }
};

动态规划解法:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>>dp(prices.size(),vector<int>(2,0));
        dp[0][0]=0;
        dp[0][1]=-prices[0];
        for(int i=1;i<prices.size();i++)
        {
            //只能交一次易
            //第i天没有持有股票的最大利润为前一天没有持有股票,并且第i天也没有买入;第i-1天有,但今天卖出
            dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]);
            //第i天持有股票的最大利润是:前一天有股票,第i天没有卖出,或者第i天买入
            dp[i][1]=max(dp[i-1][1],-prices[i]);
        }
        return dp[prices.size()-1][0];
    }
};

相关推荐

  1. LeetCode-热100:121. 买卖股票最佳时机

    2024-07-12 16:00:03       40 阅读
  2. leetcode121. 买卖股票最佳时机

    2024-07-12 16:00:03       54 阅读
  3. Leetcode 121 买卖股票最佳时机

    2024-07-12 16:00:03       56 阅读
  4. LeetCode买卖股票最佳时机

    2024-07-12 16:00:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 16:00:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 16:00:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 16:00:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 16:00:03       69 阅读

热门阅读

  1. Github 2024-07-09 Python开源项目日报 Top10

    2024-07-12 16:00:03       20 阅读
  2. 2.HTML学习

    2024-07-12 16:00:03       22 阅读
  3. “存算分离“和“湖仓一体“

    2024-07-12 16:00:03       17 阅读
  4. 对数据采集、数据存储和数据处理流程

    2024-07-12 16:00:03       18 阅读