力扣188,https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/description/(注意:本题与主站 121 题相同:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/)
动态规划思路;
方法1
class Solution {
public int bestTiming(int[] prices) {
int size = prices.length;
if (size < 2) {
return 0;
}
int[] dp = new int[size]; // dp[i]第i天操作可以获取的最大利润
dp[0] = 0;
dp[1] = prices[1] - prices[0];
int max = Math.max(dp[0], dp[1]);
for (int i = 2; i < size; ++i) {
int diff = prices[i] - prices[i - 1];
dp[i] = Math.max(diff + dp[i - 1], diff); // 卖 与 不卖 取较大值
max = Math.max(max, dp[i]);
}
return max;
}
}
方法2
找最小最大点,好方法!
class Solution {
public int bestTiming(int[] prices) {
int min = Integer.MAX_VALUE;
int max = 0;
for(int i = 0;i<prices.length;i++){
min = Math.min(prices[i],min);
max = Math.max(max,prices[i]-min);
}
return max;
}
}