package org.example.test; public class DynamicTest { /** * dp[] 定义为以 i 为结尾的最大收益。 * 算法公式为: * if (dp[i - 1] < 0) { * dp[i] = prices[i] - prices[i - 1]; * } else { * dp[i] = prices[i] - (prices[i - 1] - dp[i - 1]); * } * * @param prices * @return */ public int maxProfit(int[] prices) { // write code here int length = prices.length; if (length == 1) { return 0; } int[] dp = new int[length]; dp[0] = 0; dp[1] = prices[1] - prices[0]; int max = dp[1]; for (int i = 2; i < length; i++) { if (dp[i - 1] < 0) { dp[i] = prices[i] - prices[i - 1]; } else { dp[i] = prices[i] - (prices[i - 1] - dp[i - 1]); } max = Math.max(max, dp[i]); } return Math.max(max, 0); } }