关于顺序数组求最大差值或最大收益算法
2017-08-24 19:34
399 查看
有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。
给定数组A及它的大小n,请返回最大差值。
测试样例:
风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100
示例1
精髓就在这里
这样求解出来的second即是最大值
给定数组A及它的大小n,请返回最大差值。
测试样例:
[10,5],2
返回:0
class LongestDistance { public: int getDis(vector<int> A, int n) { // write code here int first = -9999999; int second = 0; for(int i=0;i<n;i++){ first = max(first,-A[i]); second = max(second,first+A[i]); } return second; } };
风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100
示例1
输入
3,8,5,1,7,8
输出
12
class Solution { public: /** * 计算你能获得的最大收益 * * @param prices Prices[i]即第i天的股价 * @return 整型 */ int calculateMax(vector<int> prices) { int firstbuy,firstsell,secbuy,secsell; firstbuy = secbuy = -10000; firstsell = secsell = 0; for(int i = 0 ; i < prices.size(); i++){ firstbuy = max( firstbuy , - prices[i] ); firstsell = max( firstsell , firstbuy + prices[i] ); secbuy = max( secbuy , firstsell - prices[i] ); secsell = max( secsell , secbuy + prices[i] ); } return secsell; } };
精髓就在这里
int first = -9999999; int second = 0; for(int i=0;i<n;i++){ first = max(first,-A[i]);//找到最A中在I之前的最小值 second = max(second,first+A[i]);//找到最小值之后的且<=i的最大值
这样求解出来的second即是最大值
相关文章推荐
- 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<
- [算法]数组排序之后相邻数的最大差值
- 【左神算法课】子数组最大差值小于某阈值,求满足条件的子数组个数
- 股票什么时候买进什么时候卖出收益最大----求最大子数组(算法导论第四章 4.1-3)
- 求数组相邻元素差值的最大值快速算法(C++版)
- 算法爱好者——数组中最大的差值 ? 待解决
- 股票最大收益问题及数组最大差值问题
- 算法学习之路:分治策略-最大子数组-java实现
- 数组连续子序列的最大的和-四种算法,四种时间复杂度
- 【算法导论】同时求数组的最大值和最小值
- 教材上关于模式匹配中的求next数组的算法不易理解,本人自己编写了一个具有相同功能的子函数
- 数组排序之后相邻数的最大差值
- 最大子数组和算法(Java实现)
- RMQ算法求最大最小差值
- 【面试题-编程】查找数组中差值最大的两个数
- 算法导论——最大子数组和
- lintcode&九章算法——Google 面试题 | 3个非重复子数组最大和
- 【DAY.9】php随机打乱数组顺序(洗牌算法实现)
- 求子数组和的最大值算法