123. Best Time to Buy and Sell Stock III

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 two transactions.

Note:
You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

让我们看看它又耍了什么新花样 还是找最大利润  但是只允许你交易两次 还是在买之前必须把之前买的卖出去

没思路。。  有点棘手。。

能在遍历一遍的情况下得到解吗  感觉可以。。想一会先

怎么感觉这种题好适合股票啊 。。完全没思路

还是维护一个最小值 和 利润值  交易过后重置最小值  同时维护最大的两个利润值?

没思路 去discuss区看看大神怎么解的- -

public class Solution {
public int maxProfit(int[] prices) {
int hold1 = Integer.MIN_VALUE, hold2 = Integer.MIN_VALUE;
int release1 = 0, release2 = 0;
for(int i:prices){ // Assume we only have 0 money at first
release2 = Math.max(release2, hold2+i); // The maximum if we've just sold 2nd stock so far.
hold2 = Math.max(hold2, release1-i); // The maximum if we've just buy 2nd stock so far.
release1 = Math.max(release1, hold1+i); // The maximum if we've just sold 1nd stock so far.
hold1 = Math.max(hold1, -i); // The maximum if we've just buy 1st stock so far.
}
return release2; ///Since release1 is initiated as 0, so release2 will always higher than release1.
}
}

  空间复杂度o(1) 时间复杂度o(n)

理解一下各个字段 hold1 买入第一个商品的当前最大值 hold2买入第二个商品的当前最大值  release1卖出第一个商品的当前最大值  release2卖出第二个商品的当前最大值

不是很理解  决定在eclipse设置一个案例试试。

给定的数组为2,5,8,3,18,12,6,53,59,11

public static void main(String[] args){
test test =new test();
test.Solution solution=test.new Solution();
System.out.print(solution.maxProfit(new int[]{2,5,8,3,18,12,6,53,59,11}));
}

  输出结果为

看看调试中这四个变量的变化 在Hold1前设置断点

读入第一个数2 没什么大变化

读入第二个数5 release1和release2变成3

省略一些  读到18时看看各个值

release2就是目前阶段的解。。。   看不懂 先这样吧 - -

123. Best Time to Buy and Sell Stock (三) leetcode解题笔记的更多相关文章

  1. 188. Best Time to Buy and Sell Stock IV leetcode解题笔记

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  2. 123. Best Time to Buy and Sell Stock III ——LeetCode

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  3. LN : leetcode 123 Best Time to Buy and Sell Stock III

    lc 123 Best Time to Buy and Sell Stock III 123 Best Time to Buy and Sell Stock III Say you have an a ...

  4. 123. Best Time to Buy and Sell Stock III

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  5. LeerCode 123 Best Time to Buy and Sell Stock III之O(n)解法

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  6. LeetCode OJ 123. Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  7. 【leetcode】123. Best Time to Buy and Sell Stock III

    @requires_authorization @author johnsondu @create_time 2015.7.22 19:04 @url [Best Time to Buy and Se ...

  8. [leetcode]123. Best Time to Buy and Sell Stock III 最佳炒股时机之三

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  9. [LeetCode] 123. Best Time to Buy and Sell Stock III 买卖股票的最佳时间 III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

随机推荐

  1. ssh访问控制,多次失败登录即封掉IP,防止暴力破解

    ssh访问控制,多次失败登录即封掉IP,防止暴力破解 一.系统:Centos6.3 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减 ...

  2. CubieTruck上安装mjpg_streamer

    最近手头项目需要用到一个上位机,需要在上位机上实现远程访问及视频监控.其中视频监控采用了网上资料较多的mjpg_streamer进行视频处理.在使用中遇到许多坑也一并记录下来. 首先安装依赖环境和检测 ...

  3. {Reship}{Code}{CV}

    UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/in ...

  4. win8 VB6打开提示MSCOMCTL.ocx未注册

    从xp上复制相应的文件到win8相应的位置,如果是不可以,win8中反注册此控件,再注册此控件

  5. Javascript浏览器对象模型BoM要点总结

    BOM要点总结篇 温故而知心!!学到的东东,必须要总结一下,方便自己,巩固自己.今天我为大家总结一下BOM当中的一些要点: 一.Windows对象 1.窗口的操作 windows对象对操作浏览器窗口非 ...

  6. Storm-隔离调度器

    这个版本的亮点是新的“隔离调度器”,使得在一些拓扑中分享集群变得简单和安全.隔离调度程序允许您指定哪些拓扑应该“孤立”, 这意味着它们运行在集群中的一组专用的机器,没有其他的拓扑将运行.这些孤立的拓扑 ...

  7. windows下用navicat远程链接虚拟机Linux下MySQL数据库

    今天想用navicat远程连接虚拟机中的MySQL数据库,一直连不上,在网上搜索了一下,发现原因是MySQL对远程用户登陆的授权问题.这里说一下我的解决方法.(本人小白) 首先,我用navicat去远 ...

  8. JQuery 概况

  9. AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案

    AndroidStudio导入项目一直卡在Building gradle project info,实际上是因为你导入的这个项目使用的gradle与你已经拥有的gradle版本不一致,导致需要下载该项 ...

  10. 对于.h文件和.c文件

    C语言中.h文件和.c文件详细解析_云止水_新浪博客http://blog.sina.com.cn/s/blog_73006d600102wcx5.html