[编程题] 股票交易日

在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。

给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。

测试样例:
[10,22,5,75,65,80],6
返回:87

之前做个一道 百度2016研发工程师在线编程题:风口的猪,发现这两道题几乎一模一样!

我把风口的猪的代码直接粘贴过来就能运行,都是套路~~

class Stock {
public:int maxProfit(vector<int> vec, int n) {// write code hereint sum = 0 ;for ( int i = 0; i < vec.size(); ++ i ) {int tmp = get_max( vec, 0, i - 1 ) + get_max( vec, i, vec.size() - 1 ) ;if ( tmp > sum ) sum = tmp ;}return sum ;}
private :int get_max( vector<int>& vec, int left, int right ) {if ( left == right ) return 0 ;int min = vec[left] ;int max = 0 ;for ( int i = left + 1; i <= right; ++ i ) {if ( vec[i] < min ) min = vec[i] ;if ( vec[i] - min > max ) max = vec[i] - min ;}return max ;}
};

第二次做:

class Stock {
public:int maxProfit(vector<int> vec, int n) {// write code hereint result = 0 ;for ( int i = 0; i < vec.size(); ++ i ) {int tmp = getmax( vec, 0, i - 1 ) + getmax( vec, i, vec.size() - 1 ) ;result = max( result, tmp ) ;}return result ;}
private:int getmax( vector<int>& vec, int left, int right ) {int max = 0 ;int min = vec[left] ;for ( int i = left; i <= right; ++ i ) {if ( vec[i] - min > max ) max = vec[i] - min ;if ( min > vec[i] ) min = vec[i] ;}return max ;}
};

风口的猪-中国牛市(动态规划)----百度2016研发工程师在线编程题

[编程题] 风口的猪-中国牛市
风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100

输入例子:
3,8,5,1,7,8
输出例子:
12

这是比较简单的动态规划了, 将问题划分为两部分即可。

class Solution {
public:/*** 计算你能获得的最大收益* * @param prices Prices[i]即第i天的股价* @return 整型*/int calculateMax(vector<int> vec) {int sum = 0 ;for ( int i = 0; i < vec.size(); ++ i ) {int tmp = getmax( vec, 0, i - 1 ) + getmax( vec, i, vec.size() - 1 ) ;if ( tmp > sum ) sum = tmp ;}return sum ;}private :int getmax( vector<int>& vec, int left, int right ) {if ( left == right ) return 0 ;int min = vec[left] ;int max = 0 ;for ( int i = left + 1; i <= right; ++ i ) {if ( vec[i] - min > max ) max = vec[i] - min ;if ( vec[i] < min ) min = vec[i] ;}return max ;}
};

第三次做:

class Stock {
public:int maxProfit(vector<int> vec, int n) {// write code hereint result = 0 ;for ( int i = 0; i < vec.size(); ++ i ) {int tmp = getmax( vec, 0, i ) + getmax( vec, i + 1, vec.size() - 1 ) ;result = result > tmp ? result : tmp ;}return result ;}
private:int getmax( vector<int>& vec, int left, int right ) {int minv = vec[left] ;int maxv = 0 ;for ( int i = left; i <= right; ++ i ) {if ( minv > vec[i] ) minv = vec[i] ;if ( vec[i] - minv > maxv ) maxv = vec[i] - minv ;}return maxv ;}
};

股票交易日(动态规划)----美团2016研发工程师编程题(二)相关推荐

  1. 算法面试题-美团点评2016研发工程师编程题(二)-字符编码(哈夫曼树)

    题目: 解析:这个题目的关键问题是"最短的编码",这里可以知道应该是Huffman编码了. 哈夫曼编码是一种可变字长编码,也就是说对于不同的字符的编码不是定长的,所以才能比定长编码 ...

  2. 网易2016研发工程师编程题--完全解析

    前言 之前做公司的真题,碰到动态规划,还有一些数学性质的题目比较多一点.网易2016研发工程师编程题跟之前做的题目有很大的不同,不仅涉及到二叉树的编码,还涉及到图的广度遍历,最后还有一个快排.可以说这 ...

  3. 牛客网--蘑菇街2016研发工程师编程题

    牛客网--蘑菇街2016研发工程师编程题 第一题: 搬圆桌 时间限制:1秒 空间限制:32768K 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步 ...

  4. 血型遗传检测(pair原来没有先后顺序)----去哪儿2016研发工程师编程题

    [编程题] 5-血型遗传检测 血型遗传对照表如下: 父母血型 子女会出现的血型 子女不会出现的血型 O与O O A,B,AB A与O A,O B,AB A与A A,O B,AB A与B A,B,AB, ...

  5. 蘑菇街2016研发工程师编程题--回文串

    题目 给定一个字符串,问是否能通过添加一个字母将其变为回文串. 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10. 输出描述: 输出答案(YES\NO). 示例1 输入 coco 输 ...

  6. 网易2016研发工程师编程题:扫描透镜

    扫描透镜 在N*M的草地上,小明种了K个蘑菇,蘑菇爆炸的威力极大,小华不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 ...

  7. 华为2016研发工程师编程题---删数

    题目是这样的: 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置.以8个数(N=7)为例:{0,1,2,3,4,5,6,7 ...

  8. 网易2016研发工程师编程题 - 题解

    题目链接: 第一部分,点这儿: 第二部分,点这儿. 第一题:小易的升级之路 题目: 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依 ...

  9. 比较重量 网易2016实习研发工程师编程题

    题目: 小明陪小红去看钻石,他们从一堆钻石中随机抽取两颗并比较她们的重量.这些钻石的重量各不相同.在他们们比较了一段时间后,它们看中了两颗钻石g1和g2.现在请你根据之前比较的信息判断这两颗钻石的哪颗 ...

最新文章

  1. linux项目课程设计,LINUX课程设计项目需求解析.doc
  2. Netty实例:实现简单的通讯功能
  3. 云炬60s看世界20211205
  4. mac os 安装 pkg-config
  5. POJ 2653 Pick-up sticks 判断线段相交
  6. Java IO: RandomAccessFile
  7. 基于python开发的口罩供需平台
  8. html微软雅黑字体模糊,WinXP中微软雅黑字体模糊看得很吃力怎么解决
  9. element ui el-carousel 滚动图 vue 基于vue-lazyload图片懒加载、延迟加载 解决方案
  10. iPhone OS平台:丰富的可能性
  11. linux硬盘安装卡住,linux硬盘安装问题
  12. 一卡通(M1卡)破解过程记录——获取扇区密钥
  13. diskgenius数据恢复软件,亲测可用!
  14. DataStructuresAndAlgorithm--字谜游戏
  15. python基础教程读书笔记_《Python基础教程》读书笔记10
  16. html5互动场景制作系统,春哥技术博客高仿易企秀H5场景应用制作平台源码V1.0正式版发布...
  17. 【终极之战】基于Vue3+Vant3造一个网页版的类掘金app项目 - 个人主页
  18. 方舟服务器维护公告11月19日,《方舟指令》11月29日维护公告
  19. 《孙子兵法》国学智慧
  20. Alook搭配JS脚本完美食用

热门文章

  1. .net framework4.0 安装回滚问题
  2. windows系统mysql安装教程<手把手教学>
  3. 【我,不止于此】TCL电子泛智屏BU研发中心2021届春季校招来袭!
  4. python 使用smtp发送群邮件
  5. 【附源码】计算机毕业设计java疫情期间优化旅游平台设计与实现
  6. matlab中sym看不到值和属性,matlab 用sym定义了x,但是输入函数却显示“未定义函数或变量 'x'”?...
  7. 修改html内联样式的方法
  8. shell - 01 - Shell入门:扎好马步 走的更稳
  9. 输入10个学生5门课的成绩,分别用函数实现下列功能
  10. 茶觉 | 林先生的“岩香”