[Array] Best Time to Buy and Sell Stock
2016-07-14 09:07
239 查看
Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
Example 1:
Input: [7, 1, 5, 3, 6, 4]
Output: 5
max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)
Example 2:
Input: [7, 6, 4, 3, 1]
Output: 0
In this case, no transaction is done, i.e. max profit = 0.
方法:用简单的语言表明这道题就是指在一个数组中,用当前序号的数字减去在当前序号之前的数字,可以获得一个差值,求出在这个数组中最大的差值。可以清晰的知道被减数-减数,减数越小值会越来越大,因此求当前序号的数字差的最小值,只需要找到当前序号之前的最小数字,并减之。算法时间复杂度O(n),空间复杂度O(1)。
If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.
Example 1:
Input: [7, 1, 5, 3, 6, 4]
Output: 5
max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)
Example 2:
Input: [7, 6, 4, 3, 1]
Output: 0
In this case, no transaction is done, i.e. max profit = 0.
方法:用简单的语言表明这道题就是指在一个数组中,用当前序号的数字减去在当前序号之前的数字,可以获得一个差值,求出在这个数组中最大的差值。可以清晰的知道被减数-减数,减数越小值会越来越大,因此求当前序号的数字差的最小值,只需要找到当前序号之前的最小数字,并减之。算法时间复杂度O(n),空间复杂度O(1)。
class Solution { public: int maxProfit(vector<int>& prices) { if(prices.size()==0) return 0; int max_profit=0; int min_number=prices[0]; for(int i=1;i<prices.size();i++){ int temp_profit = prices[i]-min_number; if(temp_profit>max_profit) max_profit=temp_profit; if(prices[i]<min_number) min_number=prices[i]; } return max_profit; } };
相关文章推荐
- WebApp开发之Cordova安装教程
- SpringMVC 参数绑定获取的CST时间(Java.util.Date)类型问题
- linux 远程操作命令 SSH SCP
- C#综合揭秘——细说进程、应用程序域与上下文之间的关系
- 如何书写网络请求框架(先知)
- 地球历史很长,而“人”的历史很短
- Android Wear(手表)开发 - 学习指南
- WebApp开发框架Ionic+AngularJS+Cordova
- Spring+ehcache
- nyoj 168 房间安排
- 【JZOJ 4587】 Snow的追寻
- serialVersionUID作用
- 关于冒泡排序的几点想法
- 如何在 Linux 上录制你的终端操作
- 针对谷歌默认最小字体12px的正确解决方案 (css、html)
- dotnetCore增加MiddleWare的Run,Use Map MapThen四个扩展方法
- IIS修改队列长度(IIS6+IIS7)
- 环信开发之一——配置开发环境
- NYOJ最大公因数最小公倍数
- spring_bean的生命范围