外贸推广网站公司,贵州网站外包,网站开发行业,一级造价工程师报考条件及时间一、买卖股票的最佳时机III
123. 买卖股票的最佳时机 III - 力扣#xff08;LeetCode#xff09;
请选一个喜欢的吧/(ㄒoㄒ)/~~123. 买卖股票的最佳时机 III - 力扣#xff08;LeetCode#xff09;
class Solution {public int maxProfit(int[] prices) {if(pricesnul…一、买卖股票的最佳时机III
123. 买卖股票的最佳时机 III - 力扣LeetCode
请选一个喜欢的吧/(ㄒoㄒ)/~~123. 买卖股票的最佳时机 III - 力扣LeetCode
class Solution {public int maxProfit(int[] prices) {if(pricesnull || prices.length0) {return 0;}int n prices.length;//定义二维数组5种状态 int[][] dp new int[n][5];//初始化第一天的状态dp[0][0] 0;dp[0][1] -prices[0];dp[0][2] 0;dp[0][3] -prices[0];dp[0][4] 0;for(int i1;in;i) {//dp[i][0]相当于初始状态它只能从初始状态转换来dp[i][0] dp[i-1][0];//处理第一次买入、第一次卖出dp[i][1] Math.max(dp[i-1][1],dp[i-1][0]-prices[i]);dp[i][2] Math.max(dp[i-1][2],dp[i-1][1]prices[i]);//处理第二次买入、第二次卖出dp[i][3] Math.max(dp[i-1][3],dp[i-1][2]-prices[i]);dp[i][4] Math.max(dp[i-1][4],dp[i-1][3]prices[i]);}//返回最大值return Math.max(Math.max( Math.max(dp[n-1][0],dp[n-1][1]),Math.max(dp[n-1][2],dp[n-1][3]) ),dp[n-1][4]);}
} 二、买卖股票的最佳时机IV 188. 买卖股票的最佳时机 IV - 力扣LeetCode 同上一题一样ε(┬┬﹏┬┬)3188. 买卖股票的最佳时机 IV - 力扣LeetCode class Solution {public int maxProfit(int k, int[] prices) {if(pricesnull || prices.length0) {return 0;}return dfs(0,0,0,k,prices);}//计算k次交易index表示当前是哪天status是买卖状态coutnt为交易次数private int dfs(int index, int status, int count, int k, int[] prices) {if(indexprices.length || countk) {return 0;}int a0,b0,c0;//保持不动a dfs(index1,status,count,k,prices);if(status1) {//卖一股并将交易次数1b dfs(index1,0,count1,k,prices)prices[index];} else {//买一股c dfs(index1,1,count,k,prices)-prices[index];}return Math.max(Math.max(a,b),c);}
}