代码随想录算法训练营天 第九章 四十九天| 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II
121. 买卖股票的最佳时机
1、贪心算法
class Solution {
public int maxProfit(int[] prices) {
int low = Integer.MAX_VALUE;
int result = 0;
for (int i = 0; i < prices.length; i++) {
low = Math.min(low, prices[i]);
result = Math.max(result, prices[i]-low);
}
return result;
}
}
2、动态规划
class Solution {
public int maxProfit(int[] prices) {
int length = prices.length;
int[][] dp = new int[length][2];
dp[0][0] = -prices[0];
dp[0][1] = 0;
for (int i = 1; i < length; i++) {
dp[i][0] = Math.max(dp[i-1][0], -prices[i]);
dp[i][1] = Math.max(dp[i-1][1], prices[i] + dp[i-1][0]);
}
return dp[length-1][1];
}
}
122.买卖股票的最佳时机II
class Solution {
public int maxProfit(int[] prices) {
int length = prices.length;
int[][] dp = new int[length][2];
dp[0][0] = -prices[0];
dp[0][1] = 0;
for (int i = 1; i < 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], prices[i] + dp[i-1][0]);
}
return dp[length-1][1];
}
}