122.买卖股票的最佳时机II
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了122.买卖股票的最佳时机II相关的知识,希望对你有一定的参考价值。
122.买卖股票的最佳时机II
思路
- dp 的定义依旧是 dp[i][0] 表示持有,dp[i][1] 表示没有。
- 可以多次买卖,计算持有时将上次的利润加上。
- 可以利用滚动数组节约空间
- 返回滚动数组最后的下标需要用 size 确定
class Solution {
public int maxProfit(int[] prices) {
if(prices.length == 1) return 0;
int size = prices.length;
int[][] dp = new int[size][2];
dp[0][0] = -prices[0];
dp[0][1] = 0;
for(int i = 1;i < size;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[size-1][1];
}
}
class Solution {
public int maxProfit(int[] prices) {
if(prices.length == 1) return 0;
int size = prices.length;
int[][] dp = new int[2][2];
dp[0][0] = -prices[0];
dp[0][1] = 0;
for(int i = 1;i < size;i++){
dp[i % 2][0] = Math.max(dp[(i-1) % 2][0],dp[(i-1) % 2][1] - prices[i]);
dp[i % 2][1] = Math.max(dp[(i-1) % 2][1],dp[(i-1) % 2][0] + prices[i]);
}
// 滚动最后的下标需要用 size 确定
return dp[(size-1) % 2][1];
}
}
以上是关于122.买卖股票的最佳时机II的主要内容,如果未能解决你的问题,请参考以下文章