代码随想录算法训练营第36期DAY51

DAY51

121买卖股票的最佳时机

做过了。算是二刷:来自力扣优质题解

贪心:

每次记录更新最小点和最大出售值。

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         int cur,res=INT_MIN,curmin=INT_MAX;
  5.         for(int i=0;i<prices.size();i++){
  6.             if(prices[i]<curmin) curmin=prices[i];
  7.             cur=prices[i]-curmin;
  8.             if(cur>res) res=cur;
  9.         }
  10.         return res;
  11.     }
  12. };

暴力:

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         int res=0;
  5.         for(int i=0;i<prices.size();i++){
  6.             for(int j=i+1;j<prices.size();j++)
  7.             res=max(res,prices[j]-prices[i]);
  8.         }
  9.         return res;
  10.     }
  11. };

动态规划:

算是比较系统的东西,记在纸质笔记本吧。

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         if(prices.size()==1return 0;
  5.         vector<vector<int>> dp(prices.size(),vector<int>(2));
  6.         dp[0][0]=-1*prices[0];
  7.         dp[0][1]=0;
  8.         for(int i=1;i<prices.size();i++){
  9.             dp[i][0]=max(-prices[i],dp[i-1][0]);
  10.             dp[i][1]=max(prices[i]+dp[i-1][0],dp[i-1][1]);
  11.         }
  12.         return dp[prices.size()-1][1];
  13.     }
  14. };

滚动数组法:

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         if(prices.size()==1return 0;
  5.         vector<intdp(2);
  6.         dp[0]=-1*prices[0];
  7.         dp[1]=0;
  8.         for(int i=1;i<prices.size();i++){
  9.             dp[0]=max(-prices[i],dp[0]);
  10.             dp[1]=max(prices[i]+dp[0],dp[1]);
  11.         }
  12.         return dp[1];
  13.     }
  14. };

时间竟然也快了很多,不知道为什么。

122买卖股票的最佳时机ii

做过贪心法:只要能赚钱就买卖。

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         if(prices.size()==1return 0;
  5.         int sum=0;
  6.         for(int i=1;i<prices.size();i++){
  7.             int res=prices[i]-prices[i-1];
  8.             if(res>0) sum+=res;
  9.         }
  10.         return sum;
  11.     }
  12. };

动态规划:

想对了,[多次买入和一次买入]和上一题不同的地方就是多了一个项:-price[i]不够了,要写成:dp[i-1][1]-price[i]

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         if (prices.size() == 1)
  5.             return 0;
  6.         vector<vector<int>> dp(prices.size(), vector<int>(2));
  7.         dp[0][0] = -1 * prices[0];
  8.         dp[0][1] = 0;
  9.         for (int i = 1; i < prices.size(); i++) {
  10.             dp[i][0] = max(dp[i - 1][1] - prices[i], dp[i - 1][0]);
  11.             dp[i][1] = max(dp[i - 1][0] + prices[i], dp[i - 1][1]);
  12.         }
  13.         return dp[prices.size() - 1][1];
  14.     }
  15. };

滚动数组:

  1. class Solution {
  2. public:
  3.     int maxProfit(vector<int>& prices) {
  4.         if (prices.size() == 1)
  5.             return 0;
  6.         vector<intdp(2);
  7.         dp[0] = -1 * prices[0];
  8.         dp[1] = 0;
  9.         for (int i = 1; i < prices.size(); i++) {
  10.             dp[0] = max(dp[1] - prices[i], dp[0]);
  11.             dp[1] = max(dp[0] + prices[i], dp[1]);
  12.         }
  13.         return dp[1];
  14.     }
  15. };

相关推荐

  1. 代码随想算法训练36DAY51

    2024-06-09 03:14:02       32 阅读
  2. 代码随想算法训练36DAY53

    2024-06-09 03:14:02       30 阅读
  3. 代码随想算法训练36DAY52

    2024-06-09 03:14:02       26 阅读
  4. 代码随想算法训练29Day30|LeetCode 332,51,37

    2024-06-09 03:14:02       56 阅读
  5. 代码随想算法训练29Day31|LeetCode 455,376,53

    2024-06-09 03:14:02       62 阅读

最近更新

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

    2024-06-09 03:14:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 03:14:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 03:14:02       82 阅读
  4. Python语言-面向对象

    2024-06-09 03:14:02       91 阅读

热门阅读

  1. diffusers 使用脚本导入自定义数据集

    2024-06-09 03:14:02       36 阅读
  2. 【设计模式】装饰器模式(结构型)⭐⭐

    2024-06-09 03:14:02       30 阅读
  3. 电商API在促进销售与营销中的影响

    2024-06-09 03:14:02       31 阅读
  4. Zookeeper 详解:分布式协调服务的核心概念与实践

    2024-06-09 03:14:02       34 阅读
  5. Pytorch中的广播机制

    2024-06-09 03:14:02       30 阅读
  6. Access数据中的SQL偏移注入

    2024-06-09 03:14:02       32 阅读
  7. 在Spark SQL中,fillna函数

    2024-06-09 03:14:02       29 阅读
  8. SELinux:安全增强型Linux

    2024-06-09 03:14:02       22 阅读
  9. 嵌入式C中Hex与Bin文件对比分析

    2024-06-09 03:14:02       32 阅读
  10. 数据结构学习笔记-二叉树

    2024-06-09 03:14:02       21 阅读