小米编程真题:风口的猪-中国牛市
题目描述
风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100。
示例1
输入:3,8,5,1,7,8
输出:12
方法一
遍历:由于至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。所以我们可以将prices[]分为两份0-i,i-prices.length,分别计算两部分的最大值,然后遍历i,求出和的最大值
步骤:1、创建求最大值的方法,输入prices[]、start、end,输出开始结束区间内差的最大值max
2、将数组分为两部分,进行遍历。
代码如下
public class Solution {/*** 计算你能获得的最大收益* * @param prices Prices[i]即第i天的股价* @return 整型*/public int calculateMax(int[] prices) {int sum=0;//储存两次最大收益和for(int i=1;i<prices.length;i++){int index=getMaxDifference(prices,0,i)+getMaxDifference(prices,i,prices.length-1);if(sum<index){sum=index;}}return sum;}public static int getMaxDifference(int [] prices,int start,int end){int min=prices[start];int max=0;for(int i =start+1;i<=end;i++){if(max<prices[i]-min){max=prices[i]-min;}if (min>prices[i]){min=prices[i];}}return max;}
}
方法二
public class Solution {/*** 计算你能获得的最大收益* * @param prices Prices[i]即第i天的股价* @return 整型*/public int calculateMax(int[] prices) {int firstBuy = Integer.MAX_VALUE;//第一次买入的价格// 接下来都是买入卖出之后的收益int afterFirstSell = 0;int afterSecondBuy = Integer.MIN_VALUE;int afterSecondSell = 0;for (int curPrice: prices){//第一次买入的价格应该是越小越好,最好是负数,倒贴钱firstBuy = Math.min(firstBuy, curPrice);//第一次卖出后的收益,等于当前价格减去第一次买入价格,越高越好afterFirstSell = Math.max(afterFirstSell, curPrice - firstBuy);//第二次买入后的收益,等于第一次卖出后的收益减去当前价格,越高越好afterSecondBuy = Math.max(afterSecondBuy, afterFirstSell - curPrice);//第二次卖出后的收益,等于第二次买入后的收益加上当前价格,越高越好afterSecondSell = Math.max(afterSecondSell, afterSecondBuy + curPrice);}return afterSecondSell;}
}
小米编程真题:风口的猪-中国牛市相关推荐
- 小米实习生笔试题风口的猪-中国牛市Java代码
本文地址:http://blog.csdn.net/shanglianlm/article/details/77839691 题目描述 风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七 ...
- Java算法:牛客网小米笔试真题算法Java版1-40题
题号 题目 知识点 难度 通过率 XM1 小米Git 树 困难 10.22% XM2 懂二进制 中等 29.90% XM3 风口的猪-中国牛市 动态规划 较难 18.73% XM4 电话号码分身 中等 ...
- 蓝桥杯2022年1月STEMA C++中级组编程真题解析
哈喽啊,好久不见朋友们,昨天蓝桥杯刚过去,趁着我题目还记着,来给你们讲一下 还是那句话,点赞关注加复制代码 \doge. 题目描述我只讲个大概!!! 第一题 题目 给你两个数a,b要求输出两数中较大的 ...
- 【名企笔试】小米实习生招聘(风口的猪)
1.风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[ ...
- 牛客 哔哩哔哩校招编程真题 给定一个整数数组,判断其中是否有3个数和为N 二分经典 三数之和
题目描述 给定一个整数数组,判断其中是否有3个数和为N 输入描述: 输入为一行 逗号前为一个整数数组,每个元素间用空格隔开:逗号后为N 输出描述: 输出bool值 True表示存在3个和为N的数 Fa ...
- 第十届蓝桥杯国赛Scratch编程真题解析:沙漠变绿洲
沙漠变绿洲 准备工作 导入背景<Desert>,在背景上绘制4个树坑 导入角色<Trees> 绘制水滴角色 编程实现 游戏开始,按下并移动鼠标,水滴会从鼠标处呈抛物线落下,水滴 ...
- 第十届蓝桥杯市赛Scratch编程真题解析
小猫进城堡 准备工作 导入背景库中的<Castle 2> 编程实现 小猫从坐标点(-165,-93)出发向城堡走去.随着位置的移动,角色大小逐渐变小,最后在城堡前消失. 注意 角色大小在逐 ...
- 7道腾讯算法编程真题,你能做对几道?包含一道趣味题
1.生成格雷码 在一组数字的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(GrayCode),请编写一个函数,使用递归的方法生成N位的格雷码.给定一个整数n,请返回n位的格雷 ...
- 牛客 美团编程真题 MT1 最大差值 基础贪心 蓝书上的例题
题目描述 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值. 给定数组A及它的大小n,请返回最大差值. 测试样例: [10,5],2 返回:0 这题原题是蓝书上的例题 蓝书 ...
- shopee的零食柜-动态规划-校招编程真题
题目描述 shopee的零食柜,有着各式各样的零食,但是因为贪吃,小虾同学体重日益增加,终于被人叫为小胖了,他终于下定决心减肥了,他决定每天晚上去操场跑两圈,但是跑步太累人了,他想转移注意力,忘记痛苦 ...
最新文章
- 卡式水分滴定仪预测模型分析
- php创建类用什么关键字,PHP面向对象开发之类的常用关键字
- 画活动图教程_二次元人物头发怎么画?画好头发有什么技巧?
- Vs2010删除空白行
- 2020 kali 切换中文显示_Kali设置中文
- ITK在vs2010下安装、搭建
- 一文读懂「云上企业级存储」
- Dev C++下载简介和安装
- 利用爬虫和微信机器人自动刷甘肃教师学苑学分
- Docker Alpine安装oracle客户端
- msfconsole 控制台简介
- 如何理解“安全的本质是信任问题”
- google drive加速下载
- 算法分析中的小o符号
- 对Aurora8b10b的简要理解
- EasyExcel基础使用教程
- Java基础三个排序详解_继承粗解语法关键字分析
- win7有线无线可以联网,但是显示图标打红叉
- IGF1重组人胰岛素样生长因子-1解决方案
- SqlServer 2012 发送邮件问题
热门文章
- sim800a指令_sim900a和sim800a的区别是什么
- 没有MsVCp140如何安装MysQl,怎样安装msvcp140.dll_msvcp140.dll安装教程
- 计算机网络路由器配置IP地址,电脑查看路由器设置网址(登录IP地址)的方法
- Airtest多点触控测试
- 无语!35 岁华人程序员涉嫌诈骗 150 万美元抗疫贷款,在美国遭 FBI 逮捕
- ISA——防火墙策略的执行过程
- 《那些年啊,那些事——一个程序员的奋斗史》——77
- Java语言,基于TCP编写一个简单的Client/Server 网络应用程序。
- 怎么把mp4转换成html,html5-video – VLC:如何从mp4转换为webm
- Vue实现 TodoList