题目描述

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续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;}
}

小米编程真题:风口的猪-中国牛市相关推荐

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

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

  2. Java算法:牛客网小米笔试真题算法Java版1-40题

    题号 题目 知识点 难度 通过率 XM1 小米Git 树 困难 10.22% XM2 懂二进制 中等 29.90% XM3 风口的猪-中国牛市 动态规划 较难 18.73% XM4 电话号码分身 中等 ...

  3. 蓝桥杯2022年1月STEMA C++中级组编程真题解析

    哈喽啊,好久不见朋友们,昨天蓝桥杯刚过去,趁着我题目还记着,来给你们讲一下 还是那句话,点赞关注加复制代码 \doge. 题目描述我只讲个大概!!! 第一题 题目 给你两个数a,b要求输出两数中较大的 ...

  4. 【名企笔试】小米实习生招聘(风口的猪)

    1.风口之下,猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[ ...

  5. 牛客 哔哩哔哩校招编程真题 给定一个整数数组,判断其中是否有3个数和为N 二分经典 三数之和

    题目描述 给定一个整数数组,判断其中是否有3个数和为N 输入描述: 输入为一行 逗号前为一个整数数组,每个元素间用空格隔开:逗号后为N 输出描述: 输出bool值 True表示存在3个和为N的数 Fa ...

  6. 第十届蓝桥杯国赛Scratch编程真题解析:沙漠变绿洲

    沙漠变绿洲 准备工作 导入背景<Desert>,在背景上绘制4个树坑 导入角色<Trees> 绘制水滴角色 编程实现 游戏开始,按下并移动鼠标,水滴会从鼠标处呈抛物线落下,水滴 ...

  7. 第十届蓝桥杯市赛Scratch编程真题解析

    小猫进城堡 准备工作 导入背景库中的<Castle 2> 编程实现 小猫从坐标点(-165,-93)出发向城堡走去.随着位置的移动,角色大小逐渐变小,最后在城堡前消失. 注意 角色大小在逐 ...

  8. 7道腾讯算法编程真题,你能做对几道?包含一道趣味题

    1.生成格雷码 在一组数字的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(GrayCode),请编写一个函数,使用递归的方法生成N位的格雷码.给定一个整数n,请返回n位的格雷 ...

  9. 牛客 美团编程真题 MT1 最大差值 基础贪心 蓝书上的例题

    题目描述 有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值. 给定数组A及它的大小n,请返回最大差值. 测试样例: [10,5],2 返回:0 这题原题是蓝书上的例题 蓝书 ...

  10. shopee的零食柜-动态规划-校招编程真题

    题目描述 shopee的零食柜,有着各式各样的零食,但是因为贪吃,小虾同学体重日益增加,终于被人叫为小胖了,他终于下定决心减肥了,他决定每天晚上去操场跑两圈,但是跑步太累人了,他想转移注意力,忘记痛苦 ...

最新文章

  1. 卡式水分滴定仪预测模型分析
  2. php创建类用什么关键字,PHP面向对象开发之类的常用关键字
  3. 画活动图教程_二次元人物头发怎么画?画好头发有什么技巧?
  4. Vs2010删除空白行
  5. 2020 kali 切换中文显示_Kali设置中文
  6. ITK在vs2010下安装、搭建
  7. 一文读懂「云上企业级存储」
  8. Dev C++下载简介和安装
  9. 利用爬虫和微信机器人自动刷甘肃教师学苑学分
  10. Docker Alpine安装oracle客户端
  11. msfconsole 控制台简介
  12. 如何理解“安全的本质是信任问题”
  13. google drive加速下载
  14. 算法分析中的小o符号
  15. 对Aurora8b10b的简要理解
  16. EasyExcel基础使用教程
  17. Java基础三个排序详解_继承粗解语法关键字分析
  18. win7有线无线可以联网,但是显示图标打红叉
  19. IGF1重组人胰岛素样生长因子-1解决方案
  20. SqlServer 2012 发送邮件问题

热门文章

  1. sim800a指令_sim900a和sim800a的区别是什么
  2. 没有MsVCp140如何安装MysQl,怎样安装msvcp140.dll_msvcp140.dll安装教程
  3. 计算机网络路由器配置IP地址,电脑查看路由器设置网址(登录IP地址)的方法
  4. Airtest多点触控测试
  5. 无语!35 岁华人程序员涉嫌诈骗 150 万美元抗疫贷款,在美国遭 FBI 逮捕
  6. ISA——防火墙策略的执行过程
  7. 《那些年啊,那些事——一个程序员的奋斗史》——77
  8. Java语言,基于TCP编写一个简单的Client/Server 网络应用程序。
  9. 怎么把mp4转换成html,html5-video – VLC:如何从mp4转换为webm
  10. Vue实现 TodoList