给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
题解class Solution {
public int maxProfit(int[] prices) {
int length = prices.length;
int[][] dp = new int[2][length];
//dp数组0表示不持有股票,1表示持有股票
dp[0][0] = 0;
dp[1][0] = -prices[0];
for(int i = 1; i < length; i++) {
dp[0][i] = Math.max(dp[0][i - 1], dp[1][i - 1] + prices[i]);
//不持有股票的情况分为无操作和卖出昨天持有的股票,取最大值
dp[1][i] = Math.max(dp[1][i - 1], dp[0][i - 1] - prices[i]);
//持有股票的情况分为无操作和买了今天的股票,取最大值
}
return dp[0][length - 1];
}
}



