4)确定终止状态:dp[len-1][0],即最后一天不持有股票的最大收益,因为dp[len-1][0]>dp[len-1][1],因为不持股,就会将股票转为现金class Solution { public int maxProfit(int[] prices) { if(prices.length == 0){ return 0; } //贪心算法 int ret = 0; for(int i=
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润...
两种动态规划解法只进行了规模为prices.length的单层for循环迭代,因此时间复杂度都是O(n)。 第一种解法开了2个大小为prices.length的数组,因此空间复杂度为O(n);第二种解法将空间优化为常量,因此空间复杂度为O(1)。 3 买卖股票的最佳时机 II 3.1 题目描述 给定一个数组 prices ,其中 prices[i] 是一支给定...
在前面的文章这种动态规划你见过吗——状态机动态规划之股票问题(上)我们已经介绍了两个基本的股票问题,并且对状态机动态规划做出了简要的介绍,以及在状态机当中的状态是如何进行转换的,但是在前面的两个问题当中状态的个数比较少,可能不方便大家理解状态机的含义,在本篇文章所谈到的两个问题当中状态的数目还是比较多...
方法一:动态规划 思路与算法 我们用 f[i] 表示第i 天结束之后的「累计最大收益」。根据题目描述,由于我们最多只能同时买入(持有)一支股票,并且卖出股票后有冷冻期的限制,因此我们会有三种不同的状态: 我们目前持有一支股票,对应的「累计最大收益」记为 f[i][0]; 我们目前不持有任何股票,并且处于冷冻期中,...
经典动态规划:股票 股票买卖问题是动态规划的经典问题,为此我对该题型进行分析。 121. 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最...
广度优先搜索算法框架+LeetCode111(二叉树的最小深度)+LeetCode752(打开转盘锁) 898 8 9:44 App 网中网财务决策-稽查得分点+自检自查 279 -- 22:30 App LeetCode188+LeetCode309+LeetCode714 动态规划解决股票问题 46 1 16:39 App 快速排序 3.6万 16 1:00:51 App 2024-11-12 瑞银 2026年经济增速...
只能买一次的话,第i天的状态只能有两种,第i天未持有股票,则i-1天也一定未持有股票,利润和第 i-1 天一样(可能完成了买入卖出操作,可能尚未开始买入卖出操作);第i天持有股票,则可以以今天的价格卖出,曾经以最低价格买入的。 在这个动态规划方程中,把两种情况都考虑到了,所以没问题。
学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 1. 题目解析 题目链接:309. 最佳买卖股票时机含冷冻期 - 力扣(Leetcode) 这道题很好理解,其实就是买股票的时候多了一个冷冻期。 2. 算法原理 1. 状态表示 ...
本篇文章使用动态规划算法对力扣上的股票买入系列共5道题进行求解,参考了代码随想录。 买卖股票的最佳时机 题目链接 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所...