当前位置:网站首页>leecode-学习笔记
leecode-学习笔记
2022-07-05 22:45:00 【喜欢历史的工科生】
- 股票问题-只能购买一次
因为这里只能购买一次,所以定义的dp[i][0]第i天持有股票,只能是-price[i],不能有利润的累计,即
dp[i - 1][1]-prices[i]
class Solution {
public int maxProfit(int[] prices) {
int[][] dp = new int[prices.length][2];
dp[0][0] = -prices[0];
for (int i = 1; i < prices.length; i++) {
dp[i][0] = Math.max(dp[i - 1][0], - prices[i]);
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);
}
return dp[prices.length - 1][1];
}
}
- 股票问题-可以购买多次
这里可以购买多次,所以dp[i][0]持有每天持有股票的利润可以考虑之前的利润,即
dp[i - 1][1] - prices[i]
(前一天没有持有股票的利润-当天的股票价格,这就表明之前的交易已经结束,剩下的是前一天没持有股票的利润)
class Solution {
public int maxProfit(int[] prices) {
// int res = 0;
// for (int i = 1; i < prices.length; i++) {
// res += Math.max(prices[i] - prices[i - 1], 0);//只搜集正利润
// }
// return res;
int[][] dp = new int[prices.length][2];
dp[0][0] = - prices[0];
dp[0][1] = 0;
for (int i = 1; i < prices.length; i++) {
dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);
}
return dp[prices.length - 1][1];
}
}
- 股票问题-买了两次
这个买了两次,实际上是和第一种股票问题相似,不可以多次买卖,就要和第一种情况的递推一样,只不过加了第二次购买的状态
class Solution {
public int maxProfit(int[] prices) {
int[][] dp = new int[prices.length][4];
dp[0][0] = -prices[0];
dp[0][2] = -prices[0];
for (int i = 1; i < prices.length; i++) {
//第i天第一次持有股票的利润
dp[i][0] = Math.max(dp[i - 1][0], - prices[i]);
//第i天第一次不持有股票的利润
dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i]);
//第i天第二次持有股票的利润
dp[i][2] = Math.max(dp[i - 1][2], dp[i - 1][1] - prices[i]);
//第i天第二次不持有股票的利润
dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] + prices[i]);
}
return dp[prices.length - 1][3];
}
}
边栏推荐
- TOPSIS code part of good and bad solution distance method
- 请求二进制数据和base64格式数据的预览显示
- [speech processing] speech signal denoising and denoising based on Matlab GUI low-pass filter [including Matlab source code 1708]
- Ieventsystemhandler event interface
- 航海日答题小程序之航海知识竞赛初赛
- Starting from 1.5, build a micro Service Framework -- log tracking traceid
- Metaverse Ape获Negentropy Capital种子轮融资350万美元
- 记录几个常见问题(202207)
- Arduino 测量交流电流
- Unity Max and min constraint adjustment
猜你喜欢
Opencv judgment points are inside and outside the polygon
Google Maps case
d3dx9_ How to repair 31.dll_ d3dx9_ 31. Solution to missing DLL
Un article traite de la microstructure et des instructions de la classe
Vision Transformer (ViT)
點到直線的距離直線的交點及夾角
513. Find the value in the lower left corner of the tree
Leetcode weekly The 280 game of the week is still difficult for the special game of the week's beauty team ~ simple simulation + hash parity count + sorting simulation traversal
Nangou Gili hard Kai font TTF Download with installation tutorial
【Note17】PECI(Platform Environment Control Interface)
随机推荐
Nacos installation and service registration
Metaverse ape received $3.5 million in seed round financing from negentropy capital
Common model making instructions
Golang writes the opening chapter of selenium framework
openresty ngx_lua正则表达式
How to quickly experience oneos
Business introduction of Zhengda international futures company
How to reverse a string fromCharCode? - How to reverse String. fromCharCode?
Nacos 的安装与服务的注册
The difference between MVVM and MVC
VOT toolkit environment configuration and use
APK加固技术的演变,APK加固技术和不足之处
[error record] groovy function parameter dynamic type error (guess: groovy.lang.missingmethodexception: no signature of method)
Metasploit (MSF) uses MS17_ 010 (eternal blue) encoding:: undefined conversionerror problem
700. Search in a Binary Search Tree. Sol
关于MySQL的30条优化技巧,超实用
解决thinkphp启动时“No input file specified”的问题
透彻理解JVM类加载子系统
70. Climbing Stairs. Sol
南京:全面启用商品房买卖电子合同