121 Best Time to Buy and Sell Stock [Leetcode]
2015-09-21 07:16
405 查看
题目内容:
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.
解题思路:
很直观,因为要使受益最大,只要找出相减最大的两个值。最大值一定要出现在最小值的后面。
解法1:
扫描一遍,记录下当前的最小值和最大值。如果最大值有更新,那么更新最大值后更新结果差。如果最小值有更新,重置最大值,继续扫描。
解法2:
如果把相邻两天的股票价格相减,可以得到两天之间股票的差价。如果这个差价连续若干天相加的和达到最大,那么合适的买卖的时机。
缺点:
需要额外空间,需要扫描两遍。
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.
解题思路:
很直观,因为要使受益最大,只要找出相减最大的两个值。最大值一定要出现在最小值的后面。
解法1:
扫描一遍,记录下当前的最小值和最大值。如果最大值有更新,那么更新最大值后更新结果差。如果最小值有更新,重置最大值,继续扫描。
class Solution { public: int maxProfit(vector<int>& prices) { int size(prices.size()), result(0); if(size == 0) return result; int min(prices[0]), max(prices[0]); for(int i = 1; i < size; ++i) { if(prices[i] < min) { min = prices[i]; max = INT_MIN; } else if(prices[i] > max) { max = prices[i]; int temp(max - min); result = result > temp ? result : temp; } } return result; } };
解法2:
如果把相邻两天的股票价格相减,可以得到两天之间股票的差价。如果这个差价连续若干天相加的和达到最大,那么合适的买卖的时机。
缺点:
需要额外空间,需要扫描两遍。
class Solution { public: int maxProfit(vector<int>& prices) { if(prices.size() <= 1) return 0; vector<int> change(prices.size() - 1); for(int i = 0; i < change.size(); ++i) { change[i] = prices[i+1] - prices[i]; } int result(INT_MIN), temp(0); for(int i = 0; i < change.size(); ++i) { temp += change[i]; if(temp < 0) temp = 0; else result = result > temp ? result : temp; } return result > 0 ? result : 0; } };
相关文章推荐
- Android 动画——Layout Animations布局动画
- LeetCode Generate Parentheses
- 品牌为什么爱推定制机
- session的存储方式和配置
- Linux服务管理之httpd-2.4常用配置及phpMyAdmin的安装配置
- ASP.NET页面之间传递值的几种方式
- 读《大道至简—编程的精义》有感
- 数据结构-线性表链式表示
- 《大道至简》第一章读后感
- 当前项目中,linux下memcached的启动/结束的方式
- CUDPP基本执行过程分析
- viewpager不显示
- 写几十行代码,来一场无鼠标编程之旅,看看who is e———(HTML5:HBuilder5.0.0)
- 在win7系统的电脑上安装CentOS7双系统
- 2015年9月14日--9月20日(30小时,剩3485小时)
- UIPercentDrivenInteractiveTransition Controller交互式转场切换动画
- 新的开始
- android给未签名的apk签名
- C++类的const, static 和inline成员函数(变量)
- 如何获取帮助———— QQ群讨论摘要