当前位置: 首页 > article >正文

力扣-数组-121 买卖股票的最佳时机

代码

超内存了

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int dp[prices.size()][prices.size()];
        for(int i = 0;i < prices.size();i++){
            for(int j = i; j<prices.size();j++){
                if(i == j){
                    dp[i][j] = 0;
                }else{
                    dp[i][j] = max( max( max(0, prices[j]-prices[i]), dp[i][j-1]), prices[j]-prices[i+1]);
                }
            }
        }
        int res = 0;
        for(int i = 0; i< prices.size();i++){
            res = max(res, dp[i][prices.size()-1]);
        }
        return res;
    }
};

二维变一维,不超内存,超时间了

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int dp[prices.size()]; // i  ——  size()-1 最大的那一个 
        for(int i = 0;i < prices.size();i++){
            int last = 0;
            for(int j = i; j<prices.size();j++){
                if(i == j){
                    last = 0;
                }else{
                    int temp = max( max( max(0, prices[j]-prices[i]), last), prices[j]-prices[i+1]);
                    last = temp;
                }
            }
            dp[i] = last;
        }
        int res = 0;
        for(int i = 0; i< prices.size();i++){
            res = max(res, dp[i]);
        }
        return res;
    }
};

看了大佬的题解,才明白跟dp没啥关系,主要应用贪心了

最后附上基于此思想的代码

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minPrice = prices[0];
        int profit = 0;
        for(int i = 1; i < prices.size(); i++) {
            profit = max(profit , prices[i] - minPrice);
            if(prices[i] < minPrice){
                minPrice = prices[i];
            }
        }
        return profit;
    }
};


http://www.kler.cn/a/488830.html

相关文章:

  • Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
  • 9.4 visualStudio 2022 配置 cuda 和 torch (c++)
  • 高级软件工程-复习
  • RabbitMQ基本介绍及简单上手
  • 数据结构(Java版)第七期:LinkedList与链表(二)
  • 使用docker-compose安装Redis的主从+哨兵模式
  • qml SpringAnimation详解
  • 【AI-22】深度学习框架中的神经网络2
  • 关于Java代理模式的面试题目及其答案
  • C++语言的学习路线
  • Kafka的Partition故障恢复机制与HW一致性保障-Epoch更新机制详解
  • WebRtc05:设备管理
  • HOW - Form 表单确认校验两种模式(以 Modal 场景为例)
  • Eureka缓存机制
  • RabbitMQ 在 Go 中的核心方法详解
  • 【AIGC-ChatGPT进阶提示词指令】命运之轮:一个融合神秘与智慧的对话系统设计
  • 安科瑞Acrel-1000DP分布式光伏监控系统在浙江安吉成3234.465kWp分布式光伏发电项目中的应用
  • 在 Ubuntu 上对 Nginx 进行源码编译的详细指南
  • 代码随想录刷题day04|(数组篇)209.长度最小的子数组
  • PDF转文本以及转图片:itextpdf
  • 【EXCEL 向下合并制定列的空白内容】
  • C++例程:使用I/O模拟IIC接口(6)
  • Win10本地部署大语言模型ChatGLM2-6B
  • [豆包MarCode AI 刷题] 算法题解 Java 青训入营考核 五题打卡第三天
  • 网络安全:守护数字世界的防线
  • 【react-pdf】实现在线pdf加载——翻页加载和下拉滚动加载