风口的猪-中国牛市(小米2016校招)


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

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

输出例子:
12


2、代码:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int calculateMax(vector<int> prices) {int len = prices.size();vector<int> maxLeft(len,0);//Left to rightfor (int i = 1, minPos = 0;i < len;++i){if (prices[i] > prices[i - 1]){maxLeft[i] = max(maxLeft[i - 1], prices[i] - prices[minPos]);}else{maxLeft[i] = maxLeft[i - 1];if (prices[i] < prices[minPos]){minPos = i;}}}//Right to leftvector<int> maxRight(len, 0);maxRight[len - 1] = 0;for (int i = len - 2, maxPos = len - 1;i >= 0;--i){if (prices[i] < prices[i + 1]){maxRight[i] = max(maxRight[i + 1], prices[maxPos] - prices[i]);}else{maxRight[i] = maxRight[i + 1];if (prices[i] > prices[maxPos]){maxPos = i;}}}int res=0;for (int i = 0;i < len;++i){res = max(res, maxLeft[i] + maxRight[i]);}return res;
}int main()
{int ia;vector<int> v;while (cin >> ia){v.push_back(ia);}cout << calculateMax(v) << endl;system("pause");return 0;
}

3、总结:
参考了两个解答写出,实在感叹自身实力不足。
A、从左至右扫描得到每天能收益的最大值,记数组maxLeft,此时我们要以最小值为基准;从右至左扫描得到每天能收益的最大值,记数组maxRight,此时我们要以最大值为基准。返回每天两数组和的最大值。
注意点:结果中Left部分相当于是第一次获得的最大收益,Right则是第二次。这个想法对目前的我太难。这个解答方式是我主要参考的思路。

B、这个思路很自然,但是我竟然没有想到。以i=1开始,求i前面最大收益,求i后面最大收益,记录最大和。然后++i,不断更新最大和,结束时返回最大和。求最大收益:i=3,k=1,j=0,更新max,k=2,j=0,1,更新max……不断求取前后最大,满足手里始终只有一支股。

风口的猪-中国牛市(小米2016校招)相关推荐

  1. 小米实习生笔试题风口的猪-中国牛市Java代码

    本文地址:http://blog.csdn.net/shanglianlm/article/details/77839691 题目描述 风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七 ...

  2. 风口的猪(小米实习生招聘)

    风口的猪(小米实习生招聘) 题目: 风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示, ...

  3. 李彦宏为何不爽“风口与猪”?

    09年至今,IT领袖峰会已经进入第6个年头.因BAT等巨头的高管同台,这个峰会堪称"中国互联网最顶级对话".除了乌镇世界互联网大会,只有这个场合可以看到BAT三位大佬都聚齐,算是当 ...

  4. 【经历史】风口上的雷军,小米是他最后一次创业~~传奇人生

    2011年8月16日,雷军归来,再次站到了舞台中央. 在798艺术中心北京会所的舞台中央,他身着黑色T恤和深蓝色牛仔裤,以小米科技CEO的身份,带着一款"顶级智能手机",对着台下的 ...

  5. 新能源集团2016校招测评

    新能源集团2016校招测评 呵呵,先做个小介绍:新能源科技有限公司于1999年在香港注册成立,全球研发和运营中心位于福建宁德,集团分支机构分布于北京.上海.香港.台北.东莞.西宁.德国慕尼黑和美国硅谷 ...

  6. 什么是2014年互联网上“风口的猪”?

    什么是2014年互联网上"风口的猪"? 什么是明年的风口的猪?2014年底会盘点下,看哪个预测最给力. 文/金错刀 昨天是2013年最后一次梧桐会.本次主题是互联网金融,嘉宾是软交 ...

  7. 中国人民大学2016考研复试基本分数线

    中国人民大学2016考研复试基本分数线已经发布,下面是具体分数线,请广大考生参考. (1)学术型专业 (2)专业学位 复试基本要求说明: 1. 此复试分数线为参加我校复试的基本成绩要求,各学院可根据生 ...

  8. 鸿蒙系统盲测,小米5S重磅领衔:一图看懂小米2016秋季新品发布会!

    小米5S领衔:一图看懂小米2016秋季新品发布会!又一场热热闹闹的小米新品发布会结束了,是不是有点应接不暇的感觉?今天,小米一共发布了五款产品,包括两款手机.三款电视. 头号主角当然是小米5S,配备超 ...

  9. Java校招面经_小米java校招面经,面试题整理(一面)

    下面要给大家带来的是一个小米java的校招面经,具体包括了面试题,以及面试者的部分回答,下面一起来了解一下吧! 面试题(一面) 一.自我介绍 我重点的讲了一下自己对于JVM和JUC都比较的了解. 二. ...

  10. 小米2022校招前端实习一面总结

    小米2022校招10月前端实习一面总结 1.盒模型 2.手写样式题,实现三列布局(圣杯布局) 3.宏任务.微任务题 4.原型链题 总结 牛客网视频面 牛客网没有代码提示很不友好,不过面试官人很好会给提 ...

最新文章

  1. netty使用从0到1
  2. python mysql 编码方式,Python3编码与mysql编码介绍
  3. Codeforces#363 Div2
  4. jvm_堆栈永久区详细讲解
  5. python列表字符串转数字_python 将列表中的字符串转为数字
  6. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
  7. idea插件开发(01)---最简单的helloworld版,不需要知道原理,先跟我做一个最简单的弹框插件
  8. C++ opengl GL_LINE_LOOP的绘制
  9. Spring Batch 批量处理策略
  10. 基于phonegap,html5,ratchet,handlebars等技术的微表情APP
  11. java 中关键字_java中关键字一览
  12. html+css个人博客_如何在互联网放置 HTML 页面
  13. 【java】调用System.gc()会发生什么?
  14. Apache Flink 零基础入门教程(六):状态管理及容错机制
  15. CorelDRAW x4提示非法软件产品被禁用解决方法教程
  16. linux下最简单的端口转发工具rinetd实现端口转发
  17. 一张A4纸对折不了8次?
  18. 豆豆趣事[2013年02月]
  19. 【Java进阶营】今天面了一个大学生:这82道SpringBoot面试题都答不上来?还想进大厂?
  20. 兰芝女王 的炒股心得-转载编辑

热门文章

  1. windows 进程通信(使用DDE)
  2. (超详细) eclispe如何连接SQL Server2019(通过JDBC驱动包连接)
  3. 自娱自乐的FreeRTOS——config.h配置文件详解
  4. 如何快速搭建php网站,如何轻松建站?站点一键部署搭建(详细教程)
  5. MySql 操作时间
  6. java 里面 todo 作用
  7. 弱电安防监控系统的安装要点
  8. 基于android酒店点餐系统设计,基于Android的餐厅点餐系统的设计与实现
  9. 服务器的所有网站共用443,多个ssl证书共用443端口apache
  10. springboot下载excel文件