思考
把题目抽象
-
1 2 3 4 5 1 2 3 4 5
低买高卖,如果递增可以先不卖,但是一旦递减,比如第五天和第六天,降低了,应该在第五天卖,第六天买 -
注意特殊情况,如果 1 2 3 4 5
这个没有1中的改变,需要单独判断
代码
我的代码时倒着找的,原理一样
package leetcode;
import java.util.ArrayList;
public class Q122 {
public static void main(String[] args) {
int [] prices = {1,2,3,4,5};
int result = maxProfit(prices);
System.out.println(result);
}
public static int maxProfit(int[] prices) {
int profit = 0;
int maxPrice = prices[prices.length-1];
for (int i = prices.length-2; i>=0; i--){
if (prices[i] > prices[i+1]){ //变大了
profit = profit + (maxPrice- prices[i+1]);
maxPrice = prices[i];
}
if (i == 0 && prices[i] < maxPrice){
profit = profit + (maxPrice- prices[0]);
}
}
return profit;
}
}