代码编织梦想

Leetcode 309.最佳买卖股票时机含冷冻期

题目链接
思路:动态规划,买卖股票问题
代码

class Solution {
    public int maxProfit(int[] prices) {
        // 0:持有股票的状态
        // 1:保持卖出股票的状态
        // 2:卖出股票的状态
        // 3:冷冻期
        int len = prices.length;
        if (len == 0) {
            return 0;
        }
        int[][] dp = new int[len][4];
        dp[0][0] = -prices[0];
        for (int i = 1; i < len; i++) {
            dp[i][0] = Math.max(dp[i - 1][0], Math.max(dp[i - 1][3] - prices[i], dp[i - 1][1] - prices[i]));
            dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][3]);
            dp[i][2] = dp[i - 1][0] + prices[i];
            dp[i][3] = dp[i - 1][2];
        }
        return Math.max(dp[len - 1][3], Math.max(dp[len - 1][1], dp[len - 1][2]));
    }
}

Leetcode 714.买卖股票的最佳时机含手续费

题目链接
思路:动态规划,买卖股票问题
代码

class Solution {
    public int maxProfit(int[] prices, int fee) {
        // dp[i][0]代表第i天持有股票的最大收益
        // dp[i][1]代表第i天不持有股票的最大收益
        if (prices == null || prices.length == 0) {
            return 0;
        }
        int length = prices.length;
        int[][] dp = new int[length][2];
        int result = 0;
        // dp[0][0]表示第0天持有股票,此时的持有股票就一定是买入股票了,
        // 因为不可能有前一天推出来,所以dp[0][0] -= prices[0]
        dp[0][0] = -prices[0];
        // dp[0][1]表示第0天不持有股票,不持有股票那么现金就是0,所以dp[0][1] = 0
        dp[0][1] = 0;
        for (int i = 1; i < length; i++) {
            // 第i-1天就持有股票,那么就保持现状,所得现金就是昨天持有股票的所得现金 即:dp[i - 1][0]
            // 第i天买入股票,当第i天买入股票的时候,所持有的现金可能有之前买卖过的利润。
            // 所得现金为前一天卖出的利润加上买入今天的股票后所得现金即:-prices[i]
            dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
            // 第i-1天就不持有股票,那么就保持现状,所得现金就是昨天不持有股票的所得现金 即:dp[i - 1][1]
            // 第i天卖出股票,所得现金就是按照今天股票价格卖出后所得现金即:prices[i] + dp[i - 1][0] - fee
            dp[i][1] = Math.max(dp[i - 1][1], prices[i] + dp[i - 1][0] - fee);
        }
        return dp[length - 1][1];
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45368277/article/details/128840795

代码随想录算法训练营第51天 | 714.买卖股票的最佳时机含手续费 309.最佳买卖股票时机含冷冻期 300.最长递增子序列_lebowskii的博客-爱代码爱编程

代码随想录系列文章目录 动态规划篇 —— 股票问题收尾、 线性dp开 文章目录 代码随想录系列文章目录714.买卖股票的最佳时机含手续费309.最佳买卖股票时机含冷冻期状态转移总结代码 股票问题总结最长上

代码随想录训练营day51_jiuyu_m的博客-爱代码爱编程

题目一:最佳买卖股票时机含冷冻期 力扣题目链接 题目描述: 给定一个整数数组prices,其中第  prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 思路分析:代码随想录

代码随想录算法训练营day51 | 309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费_jzh013的博客-爱代码爱编程

309.最佳买卖股票时机含冷冻期 相对于#122,这道题增加了一个限制:After you sell your stock, you cannot buy stock on the next day (i.e., cooldown one day).   因此,存在4种状态: 持有股票状态:今天买入股票,或者是之前就买入了股票然后没有操

代码随想录训练营day51, 买卖股票最佳时机含冷冻期, 买卖股票最佳时机含手续费_南部武士s的博客-爱代码爱编程

买卖股票最佳时机含冷冻期 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天) 数组定义: dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j] 四种状态分析: 买入/持有股票状态 0卖出股票 两天前就卖出了股票,度过了冷冻期,一直没操作 1今天卖出了股票 2今天为冷冻期 3 递推公式: 达到状态1: dp[i][0]

代码随想录刷题|leetcode 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费_symdunstaz的博客-爱代码爱编程

目录 309.最佳买卖股票时机含冷冻期 思路 1、确定dp数组以及下标含义 2、确定递推公式 3、初始化  4、遍历顺序 5、获取结果 最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费 思路 买卖股票的最佳时机含手续费 309.最佳买卖股票时机含冷冻期 题目链接:力扣

代码随想录算法训练营day51|309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费,总结-爱代码爱编程

309.最佳买卖股票时机含冷冻期 力扣 思路: 1. dp数组及其下标的含义:dp[i][j] 代表第i天的状态为j,所持有的最多现金为dp[i][j];         j=0:买入/持有股票状态;         j=1:股票已卖出且冷冻期已过,保持不持有股票状态;         j=2:股票在今天卖出;         j=3:处于冷

代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费-爱代码爱编程

309.最佳买卖股票时机含冷冻期 我用的三个状态: 状态一:当天无操作,即当天为冷冻期或者前面卖出了股票,保持状态状态二:当天买入状态三:当天卖出 卡哥用的四个状态,更加清晰明了,将我的状态一分成了两个【309.最佳买卖

代码随想录算法训练营-day51-爱代码爱编程

309.最佳买卖股票时机含冷冻期 学习文章链接:思路:见代码代码: class Solution { public int maxProfit(int[] prices) { // 持有股票状态(

day25|51.n皇后、37.解数独-爱代码爱编程

51.N皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了

day52最长递增子序列-爱代码爱编程

力扣300.最长递增子序列 题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/ 思路 dp数组的含义 dp[i]表示,以nums[i]结

java三路快速排序-爱代码爱编程

概念 三路快速排序: 是双路快速排序的进一步改进版本,三路排序算法把排序的数据分为三部分,分别为小于 v,等于 v,大于 v,v 为标定值,这样三部分的数据中,等于 v 的数据在下次递归中不再需要排序,小于 v 和大于 v

in wirelesssecurity, denial of service attack classification 关于dos攻击分类的讨论-爱代码爱编程

In wirelesssecurity, Denial of Service attack classification NIHAODONG(201476606) Departmentof Computer Sciences Universityof Liverpool Sgndong2@liverpool.ac.uk Abs

go语言进阶和依赖管理(二)——并发和依赖管理-爱代码爱编程

文章目录 一、本文重点内容:二、详细知识点介绍:1、并发和并行并发:并行:结论: 2、Go的协程协程:线程: 3、协程通信方式一:使用通道交换数据方式二:使用共享内存完成数据交换 4、协程通道

代码随想录算法训练营day51|| 309.最佳买卖股票时机含冷冻期 ||714.买卖股票的最佳时机含手续费 ||300.最长递增子序列-爱代码爱编程

309.最佳买卖股票时机含冷冻期 思路: 这题相对于买卖股票最佳时机2多了一个冷冻期的条件,买卖股票最佳时机2每天只用考虑两个状态,买入股票状态和卖出股票的状态。这题多了一个条件就需要多出一些状态求解,这题就需要总的每天可能分为四个状态:1.持有股票 2.第i天之前不持有股票(前一天是冷冻期,或者前一天超过冷冻期并且不持有股票) 3.第i天卖出股票 4

代码随想录算法训练营day 51 |309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费-爱代码爱编程

309.最佳买卖股票时机含冷冻期 代码随想录 思路: 达到买入股票状态(状态一)即:dp[i][0],有两个具体操作: 操作一:前一天就是持有股票状态(状态一),dp[i][0] = dp[i - 1][0]操作二:今天买入了,有两种情况 前一天是冷冻期(状态四),dp[i - 1][3] - prices[i]前一天是保持卖出股票的状态(状

代码随想录算法训练营day51动态规划:309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费-爱代码爱编程

309.最佳买卖股票时机含冷冻期 文章链接:代码随想录 (programmercarl.com) 思路:无思路 看完文章后的反思:(思路均摘自代码随想录) (1)确定dp数组含义 dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j] 具体可以区分出如下四个状态: 状态一:持有股票状态(今天买入股票,或者是之前就买入了股票然后没有

leetcode 1071. greatest common divisor of strings(字符串的最大公约数)-爱代码爱编程

For two strings s and t, we say “t divides s” if and only if s = t + … + t (i.e., t is concatenated with itself

oj万题详解––卫星地图(c++详解)-爱代码爱编程

目录 题目 分析 参考代码 题目 题目描述 一张矩形的卫星地图,有M行N列。行列中的0表示空地,1表示有建筑。有3种类型的建筑: L型: 仅在一行上占据连续的若干个格子,长度至少为2,至多为N C型:仅在一列上占据连续的若干个格子,长度至少为2,至多为M S型:仅占据单个格子。 在同一行上或者同一列上可以出现多个

代码随想录算法训练营day53动态规划:1143.最长公共子序列,1035.不相交的线,53. 最大子序和-爱代码爱编程

要思考dp是由哪几个状态推导而来 1143.最长公共子序列 文章链接:代码随想录 (programmercarl.com) 思路:无思路 看完文章后的反思:与718.最长重复子数组的区别在于,此题不要求是连续的 (1)确定dp数组含义 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的

tidb 6.5 新特性解析丨过去一年,我们是如何让 tiflash 高效又稳定地榨干 cpu?-爱代码爱编程

TiDB 6.5 LTS 版本已经发布了。这是 TiDB V6 的第二个长期支持版,携带了诸多备受期待的新特性:产品易用性进一步提升、内核不断打磨,更加成熟、多样化的灾备能力、加强应用开发者生态构建…… TiDB 6.5

​力扣解法汇总2325. 解密消息-爱代码爱编程

 目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key