动态规划
class Solution {
public int maxProfit(int[] prices) {
if(prices.length<=1){//如果长度小于等于1,则最多挣0
return 0;
}
int [] dp=new int[2];//定义一个数组,0存放当天存有股票,1存放当天没有股票
dp[1]=-prices[0];//初始化有股票的时候的钱,即第一天买了股票
dp[0]=0;//初始化没有股票时候的钱,即第一天没有买股票
for(int i=1;i<prices.length;i++){//遍历所有天数,找出挣的最多的
dp[0]=Math.max(dp[0],dp[1]+prices[i]);//当前没有股票的两种情况:前一天没有股票;前一天有股票,今天卖了
dp[1]=Math.max(dp[1],-prices[i]); //当天有股票的两种情况:前一天有股票,今天无操作;前一天没有股票,今天买了
}
return dp[0];//返回最后一天没有股票时的最大值
}
}