标签:style and 注意 定时 时间 时间复杂度 for code pre
1 class Solution{ 2 public static int maxProfit(int k,int[] prices) { 3 int nlen = prices.length; 4 if(nlen<=1)return 0; 5 else if(k>nlen/2) { 6 int res = 0; 7 for(int i = 1;i<nlen;i++) 8 if(prices[i]>prices[i-1])res+=(prices[i]-prices[i-1]); 9 return res; 10 }else { 11 int temp = 0; 12 int[][]dp = new int[k+1][nlen]; 13 Arrays.fill(dp[0],0); 14 for(int i = 0;i<=k;i++) 15 dp[i][0] = 0; 16 for(int kt = 1;kt<=k;kt++) { 17 for(int i = 1;i<nlen;i++) { 18 temp = 0; 19 for(int j = 0;j<=i;j++) 20 temp = temp>(dp[kt-1][j]+prices[i]-prices[j])?temp:(dp[kt-1][j]+prices[i]-prices[j]); 21 dp[kt][i] = dp[kt][i-1]>temp?dp[kt][i-1]:temp; 22 } 23 } 24 return dp[k][nlen-1]; 25 } 26 } 27 }
不过在最后说一句,由于我编写的代码使用了三层for循环,时间复杂度为O(n^3),在LeetCode上仅仅击败了不到9%的人,额,又是一个比较惨淡的数据了。。。。
动态规划——Best Time to Buy and Sell Stock IV
标签:style and 注意 定时 时间 时间复杂度 for code pre
原文地址:https://www.cnblogs.com/messi2017/p/9903335.html