个人技术分享

思考

把题目抽象

  1. 1 2 3 4 5 1 2 3 4 5
    低买高卖,如果递增可以先不卖,但是一旦递减,比如第五天和第六天,降低了,应该在第五天卖,第六天买

  2. 注意特殊情况,如果 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;
    }

}