给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
第i天持有股票 情况分为两种 1 第i-1天未进行任何操作 此时你的利润就是你第i-1天持有的利润 2 第i-1天卖出在第i天买入,你在第i-1天的利润减去今天买入的股票
第i天不持有股票 情况分为两种 1 第i-1天你也没持有 此时你的利润就是你第i-1天没持有时的利润 2第i天你卖出了你的股票此时你的利润就是你第i-1天持有时的利润加上你今天卖出股票的价格
public static int maxProfit(int[] nums) { if (nums==null || nums.length<2) { return 0; } int length = nums.length; int hold = -nums[0]; int noHold = 0; for (int i = 1; i < length; i++) { hold = Math.max(hold, noHold - nums[i]); noHold = Math.max(noHold, hold + nums[i]); } //最后一天肯定是手里没有股票的时候,利润才会最大, return noHold; }