Best Time to Buy and Sell Stock I

你只能一个操作:维修preMin拍摄前最少发生值

代码例如以下:

    int maxProfit(vector<int> &prices) {
if (prices.size() == 0) return 0;
int profit = 0;
int preMin = prices[0];
for (int i = 1; i < prices.size(); i++)
{
if (prices[i] < preMin) preMin = prices[i];
profit = max(profit, prices[i] - preMin);
}
return profit;
}

Best Time to Buy and Sell Stock II

能无限次操作时:当==>当前价格 > 买入价格的时候,卖出

代码例如以下:

    int maxProfit(vector<int> &prices) {
if (prices.size() == 0) return 0;
int profit = 0;
int buy = prices[0];
for (int i = 1; i < prices.size(); i++)
{
if (buy < prices[i])
profit += prices[i] - buy;
buy = prices[i];
}
return profit;
}

Best Time to Buy and Sell Stock III

仅仅能操作两次时:

两次操作不能重叠。能够分成两部分:0...i的最大利润fst  和i...n-1的最大利润snd

代码例如以下:

    int maxProfit(vector<int> &prices) {
if (prices.size() == 0) return 0;
int size = prices.size();
vector<int> fst(size);
vector<int> snd(size); int preMin = prices[0];
for (int i = 1; i < size; i++)
{
if (preMin > prices[i]) preMin = prices[i];
fst[i] = max(fst[i - 1], prices[i] - preMin);
}
int profit = fst[size - 1];
int postMax = prices[size - 1];
for (int i = size - 2; i >= 0; i--)
{
if (postMax < prices[i]) postMax = prices[i];
snd[i] = max(snd[i + 1], postMax - prices[i]);
//update profit
profit = max(profit, snd[i] + fst[i]);
}
return profit;
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

Best Time to Buy and Sell Stock I,II,III [leetcode]的更多相关文章

  1. [Leetcode][JAVA] Best Time to Buy and Sell Stock I, II, III

    Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a gi ...

  2. LeetCode:Best Time to Buy and Sell Stock I II III

    LeetCode:Best Time to Buy and Sell Stock Say you have an array for which the ith element is the pric ...

  3. Best Time to Buy and Sell Stock I II III

    Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a gi ...

  4. leetcode day6 -- String to Integer (atoi) &amp;&amp; Best Time to Buy and Sell Stock I II III

    1.  String to Integer (atoi) Implement atoi to convert a string to an integer. Hint: Carefully con ...

  5. 解题思路:best time to buy and sell stock i && ii && iii

    这三道题都是同一个背景下的变形:给定一个数组,数组里的值表示当日的股票价格,问你如何通过爱情买卖来发家致富? best time to buy and sell stock i: 最多允许买卖一次 b ...

  6. LeetCode之“动态规划”:Best Time to Buy and Sell Stock I && II && III && IV

    Best Time to Buy and Sell Stock I 题目链接 题目要求: Say you have an array for which the ith element is the ...

  7. [LeetCode] 递推思想的美妙 Best Time to Buy and Sell Stock I, II, III O(n) 解法

    题记:在求最大最小值的类似题目中,递推思想的奇妙之处,在于递推过程也就是比较求值的过程,从而做到一次遍历得到结果. LeetCode 上面的这三道题最能展现递推思想的美丽之处了. 题1 Best Ti ...

  8. Best Time to Buy and Sell Stock I II III IV

    一.Best Time to Buy and Sell Stock I Say you have an array for which the ith element is the price of ...

  9. 123. Best Time to Buy and Sell Stock (三) leetcode解题笔记

    123. Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the pric ...

随机推荐

  1. Echart饼图、柱状图、折线图(pie、bar、line)加入点击事件

    var myChart= echarts.init(document.getElementById('myChart')); myChart.on('click', function (param) ...

  2. C#关于ref与out的总结

    原文:C#关于ref与out的总结 首先大概说下函数调用的过程,首先为被调用函数分配存储空间(分为代码区和变量区)之后将调用函数传递过来的变量压栈,然后逐一弹栈进行处理,之后进行运算,将需要返回的变量 ...

  3. random_shuffle (stl算法)打乱顺序 - 飞不会的日志 - 网易博客

    random_shuffle (stl算法)打乱顺序 - 飞不会的日志 - 网易博客 random_shuffle (stl算法)打乱顺序 2012-03-31 10:39:11|  分类: 算法 | ...

  4. ORA-00210 ORA-15001 ORA-15055 ORA-01031: insufficient privileges

    ORA-00210: cannot open the specified control file ORA-00202: control file: &apos;+DATA/posdb/con ...

  5. 在Sublime Text3中运行PHP代码

    一.前言 最近由于工作需要要与第三方系统对接,另外由于文档中关于其中几个接口就只有很简单的描述,弄了半天都没有弄成功.跟第三方负责的人沟通后还是没有找到具体问题出在哪里,另外因为他们没有开发人员懂.n ...

  6. SE 2014年4月29日

    交换网络中有vlan1 到20个vlan,要求使用MSTP技术实现vlan的负载分担. SW2为实例1(vlan1-vlan10)的主根,SW3为备根 SW3为实例2(vlan11-vlan20)的主 ...

  7. codefroce D. Powerful array[初识块状数组]

    codefroce D. Powerful array[初识块状数组] 由于是初始所以,仅仅能先用别人的分析.囧... 题目: 给定一个数列:A1, A2,--,An,定义Ks为区间(l,r)中s出现 ...

  8. 设计模式学习一:strategyPattern

    #ifndef STRATEGYPATTERN_H_#define STRATEGYPATTERN_H_#include<iostream>using namespace std; //策 ...

  9. android_重写button样式

    这样的button样式应该源自IOS.假设安卓上实现,则须要使用android上面的layer-list来实现. 事实上layer-list有点像framlayout,作用就是覆盖. 先说一下实现原理 ...

  10. Java EE (12) -- 系统质量的分类

    明显的 性能(Performance): 对响应用户的应答时间的度量.可靠性(Reliability): 对包括后台存储和给用户的表示结果在内的数据正确的可能性的度量.可用性(Availability ...