买卖股票的最佳时机、买卖股票的最佳时机 II
买卖股票的最佳时机
力扣连接:121. 买卖股票的最佳时机(简单)
1.方法
因为股票就买卖一次,那么贪心的想法很自然就是取最左最小值,取最右最大值,那么得到的差值就是最大利润。
代码
class Solution {
public int maxProfit(int[] prices) {
int[] dp = new int[2];
//0:最小买入价格; 1:最大利润
dp[0] = Integer.MAX_VALUE;
dp[1] = 0;
for(int i=0;i<prices.length;i++){
dp[0] = Math.min(dp[0], prices[i]);
dp[1] = Math.max(dp[1], prices[i]-dp[0]);
}
return dp[1];
}
}
买卖股票的最佳时机 II
动态规划解法
代码
class Solution {
public int maxProfit(int[] prices) {
int len = prices.length;
int[] dp = new int[len];
dp[0] = 0;
for(int i=1; i<len; i++){
dp[i] = Math.max(dp[i-1], dp[i-1] + prices[i] - prices[i-1]);
}
return dp[len-1];
}
}