class Solution {
public int maxProfit(int[] prices) {
int[][] dp = new int[prices.length + 1][2];
dp[0][0] = Integer.MIN_VALUE;
for(int i = 1; i < prices.length + 1;i++){
int price = prices[i - 1];
dp[i][0] = Math.max(dp[i - 1][0],-price);
dp[i][1] = Math.max(dp[i - 1][1],dp[i][0] + price);
}
return dp[prices.length][1];
}
}
dp[i][0]保存当前持有现金,是负值,就是买入的最小值,dp[i][1]储存最大收益