public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param prices int整型一维数组 
     * @param k int整型 
     * @return int整型
     */
    public int maxProfit (int[] prices, int k) {
        if (prices.length <= 1 || k == 0) {
			return 0;
		}
		int len = prices.length;
		int[] buy = new int[len + 1];
		int[] sell = new int[len + 1];
		Arrays.fill(buy, -prices[0]);
		Arrays.fill(sell, 0);
		for (int p : prices) {
			for (int i = 1; i <= k; i++) {
				buy[i] = Math.max(buy[i], sell[i - 1] - p);
				sell[i] = Math.max(sell[i], buy[i] + p);
			}
		}
		return sell[k];
    }
}