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

买卖股票的最佳时机 IV (leetcode 188)

leetcode系列

文章目录

  • 一、核心操作
  • 二、外层配合操作
  • 三、核心模式代码
  • 总结


一、核心操作

  1. 对于每一次处于买入和卖出状态,都依赖于上一次买入或卖出的状态,而买入就是在上一次卖出的基础上减去当天股票的价格,卖出就是在上一次买入的基础上加上当天的股票价格,所以一共要设置2*k+1个状态,其中还有一个是什么都不干的状态,初值全部为0
  2. 设置初值:只要是奇数状态则设置为-prices[0]
  3. 大循环为遍历每天的价格,小循环为更新dp数组

提示:小白个人理解,如有错误敬请谅解!

二、外层配合操作

三、核心模式代码

代码如下:

class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {
        int n=2*k+1;
        vector<int> dp(vector<int>(n,0));
        for(int i=1;i<n;i+=2)
        {
            dp[i]=-prices[0];
        }
        for(int i=1;i<prices.size();i++)
        {
            for(int j=1;j<n;j++)
            {
                if(j%2)
                {
                    dp[j]=max(dp[j],dp[j-1]-prices[i]);
                }
                else 
                {
                    dp[j]=max(dp[j],dp[j-1]+prices[i]);
                }
                // cout<<dp[j]<<" ";
            }
            // cout<<endl;
        }
        return dp[n-1];
    }
};

总结

  1. 当循环只操作奇数位时,一定要i+=2,设置为i+2没有任何作用,且小循环时一定不能让j超过数组大小!!!

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

相关文章:

  • 基于SpringBoot的汽车租赁系统
  • 消息队列ActiveMQ、RabbitMQ、RocketMQ、Kafka对比分析和选型
  • 第八:在Go语言项目中使用Zap日志库
  • vue js给元素动态添加动画样式, 改变背景色
  • 单片机 - RAM 与内存、ROM 与硬盘 之间的详细对比总结
  • 【后端开发面试题】每日 3 题(二十)
  • 计算机网络 - OSI 七层模型
  • ffmpeg+QOpenGLWidget显示视频
  • 基于深度学习的自动驾驶目标检测系统
  • 带你了解Java无锁并发CAS
  • AWS AI认证考试中经常提及几个重要的工具介绍
  • EasyRTC轻量级Webrtc音视频通话SDK,助力带屏IPC在嵌入式设备中的应用
  • 【大模型微调(Fine-tuning)完整流程、调优思路】
  • 响应式 Web 设计:HTML 与 CSS 协同学习的进度(一)
  • 大数据学习(82)-数仓详解
  • 利用 @eslint/eslintrc 实现 ESLint9的适配
  • Retrofit中scalars转换html为字符串
  • AI 智能录音工牌产品形态总结
  • Oracle 外键/引用完整性(Foreign Key / Referential Integrity Constraints)
  • springboot milvus search向量相似度查询 踩坑使用经验