leetcode-Best Time to Buy and Sell Stock-121
2016-08-27 21:08
246 查看
a[i]代表第i天商品的价格,问如果我买入一次再卖出一次,能得到的最大利润。
直观的做法是二重循环,枚举第i天买入,然后枚举大于第i天卖出,计算利润更新最大值。
利用贪心思想可得线性做法:假设第i天买入,那么肯定选第i天以后商品价格最大的那天卖出,因此从后往前遍历,更新最大的价格,同时减去当前价格就是当天买入能得到的最大利润,只需遍历一遍。
直观的做法是二重循环,枚举第i天买入,然后枚举大于第i天卖出,计算利润更新最大值。
利用贪心思想可得线性做法:假设第i天买入,那么肯定选第i天以后商品价格最大的那天卖出,因此从后往前遍历,更新最大的价格,同时减去当前价格就是当天买入能得到的最大利润,只需遍历一遍。
class Solution { public: int maxProfit(vector<int>& prices) { int len=prices.size(); if(len==0||len==1) return 0; int mx=prices[len-1]; int ans=0; for(int i=len-2;i>=0;i--){ if(mx>prices[i]) ans=max(ans,mx-prices[i]); else mx=prices[i]; } return ans; } };
相关文章推荐
- java笔记--day09--接口(三)类和接口的关系
- CSS (float,clear)
- mysql出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- lcd驱动
- linux用户家目录无损迁移到独立硬盘
- 设计模式 组合模式
- LoadLibrary python.plw error: 找不到指定的模块
- 关于链式前向星
- keep on coding8.26-2
- iOS开发 图文混编
- iBatis面试题
- ^按位异或运算符
- Java虚拟机系列(二):垃圾收集器与内存分配策略
- PhpStorm支持CodeIgniter框架的代码智能提示
- 广州芳村信义会馆1850创意园拍摄之旅
- 【数位DP】HDU3565-Bi-peak Number
- Touchable类型的组件的子组件为复合类型时出现的错误解决
- 无刷新URL 更新
- 晴空
- C++指针详解