描述
假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益

  1. 你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票
  2. 如果不能获取收益,请返回0
  3. 假设买入卖出均无手续费
public class MaxProfitSolve {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算最大收益
* @param prices int整型一维数组 股票每一天的价格
* @return int整型
*/
public int maxProfit (int[] prices) {

int[][] dp = new int[prices.length][2];
dp[0][0] = 0;
dp[0][1] = -prices[0]; // 第1天持有股票

for (int i = 1; i < prices.length; i++) {
dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]+prices[i]);
dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]-prices[i]);
}
System.out.println();
for (int i = 0; i < dp.length; i++) {
for (int j = 0; j < dp[0].length; j++) {
System.out.print(dp[i][j]);
System.out.print(" ");
}
System.out.println();
}
return dp[prices.length-1][0];
}

public static void main(String[] args) {
int[] prices = {1,2,3,4,5};
int[] prices1 = {8,9,2,5,4,7,1};
MaxProfitSolve maxProfitSolve = new MaxProfitSolve();
System.out.println(maxProfitSolve.maxProfit(prices));
}
}