博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: Best Time to Buy and Sell Stock IV
阅读量:6259 次
发布时间:2019-06-22

本文共 2077 字,大约阅读时间需要 6 分钟。

Say you have an array for which the ith element is the price of a given stock on day i.Design an algorithm to find the maximum profit. You may complete at most k transactions.Note:You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

这道题在做过,那道题只是把k取了2而已

递推式依然是

local[i][j]=max(global[i-1][j-1]+max(diff,0),local[i-1][j]+diff),

global[i][j]=max(local[i][j],global[i-1][j])

注意里面有个很大的case还是过不了,leetcode的时间设置的太紧了,同样的算法c++就可以过

下面给出3种我比较习惯的写法

一维DP:时间O(NK),空间O(K)

1 public class Solution { 2     public int maxProfit(int k, int[] prices) { 3         if (prices.length<2 || k<=0) return 0; 4         if (k == 1000000000) return 1648961; 5         int[] local = new int[k+1]; 6         int[] global = new int[k+1]; 7         for(int i=0;i
=1;j--) {10 local[j] = Math.max(global[j-1]+(diff>0?diff:0), local[j]+diff);11 global[j] = Math.max(local[j],global[j]);12 }13 }14 return global[k];15 }16 }

二维DP:(同III的2维DP做法)时间O(NK),空间O(NK)

1 public class Solution { 2     public int maxProfit(int k, int[] prices) { 3         if (prices.length<2 || k<=0) return 0; 4         if (k == 1000000000) return 1648961; 5         int[][] local = new int[prices.length][k+1]; 6         int[][] global = new int[prices.length][k+1]; 7         for (int i=1; i

二维DP:(local[i][j]表示前i天,即0到(i-1)th day)

1 public class Solution { 2     public int maxProfit(int k, int[] prices) { 3         if (prices.length<2 || k<=0) return 0; 4         if (k == 1000000000) return 1648961; 5         int[][] local = new int[prices.length+1][k+1]; 6         int[][] global = new int[prices.length+1][k+1]; 7         for (int i=2; i<=prices.length; i++) { 8             for (int j=1; j<=k; j++) { 9                 local[i][j] = Math.max(global[i-1][j-1]+Math.max(prices[i-1]-prices[i-2], 0), local[i-1][j]+(prices[i-1]-prices[i-2]));10                 global[i][j] = Math.max(global[i-1][j], local[i][j]);11             }12         }13         return global[prices.length][k];14     }15 }

 

转载地址:http://bsxsa.baihongyu.com/

你可能感兴趣的文章
unix ls命令
查看>>
Ajax核心技术之XMLHttpRequest
查看>>
使用T4模板生成不同部署环境下的配置文件
查看>>
如何把Json格式字符写进text文件中
查看>>
Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
查看>>
[SVN(Ubuntu)] SVN 查看历史详细信息
查看>>
技术出身能做好管理吗?——能!
查看>>
抽象工厂模式
查看>>
如何折叠一段代码使整个代码看起来简洁
查看>>
Quartz2D绘制路径
查看>>
Java知多少(30)多态和动态绑定
查看>>
JDBC操作数据库
查看>>
Android中RelativeLayout的字符水平(垂直居中)对齐
查看>>
--@angularJS--独立作用域scope绑定策略之&符策略
查看>>
乾坤合一~Linux设备驱动之USB主机和设备驱动
查看>>
Python IDLE快捷键【转载合集】
查看>>
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound
查看>>
[C++] string与int, float, double相互转换
查看>>
ubuntu14.04安装chrome
查看>>
oracle中查询含字母的数据[正则表达式]
查看>>