2022Java后端之美团笔试题
本文题目转载自 :https://blog.csdn.net/qq_45915803/article/details/124637118题目一: 小团饲养了一小缸鱼,并且买了A、B、C三类饲料来喂养它们,小团的饲养计划如下: —— 在每周一、五、六,喂8粒A类饲料; —— 在每周二、日,喂5颗B类饲料; —— 在每周三、四,喂7颗C类饲料。 假设在某个周一,小团一次性购买了A、B、C三类饲料各a、b、c颗,并在当天开始饲养,请问如果小团按照它的饲养计划进行喂食, 请问这批饲料可以吃多少天(周一当天也算一天)?样例输入 8 6 6 样例输出 2
分析:
每周一、五、六:喂投8颗A类饲料;
每周二、日:喂投5颗B类饲料;
每周三、四:喂投7颗C类饲料;
由此可得序列:8-5-7-7-8-8-5 该序列每七天一循环。
-8 | -5 | -7 | -7 | -8 | -8 | -5 |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
将该序列存入一数组中,对应下标加一代表其对应每周的哪一天,例如下标为0 则0+1=1代表星期一,-8表示那一天A饲料剩余总值减去8;
[0]-[4]-[5]存储A饲料的剩余数
[1]-[6]存储B饲料的剩余数
[2]-[3]存储C饲料的剩余数
public class TestDemo1 {//8 5 7 7 8 8 5 为一周期//标记A饲料为8 B饲料为5 C饲料为7public static void main(String[] args) {/*** 针对条件选择相应的测试用例*/int day = days(8,5,7); //3天int day2 = days(8,6,6); //2天int day3 = days(8,3,8); //1天int day4 = days(7,5,7); //0天int day5 = days(8,5,14); //4天int day6 = days(16,5,14); //5天int day7 = days(100,100,100); //28天int day8 = days(23,65,43); //5天System.out.println(day);System.out.println(day2);System.out.println(day3);System.out.println(day4);System.out.println(day5);System.out.println(day6);System.out.println(day7);System.out.println(day8);}public static int days(int a, int b, int c) {if (a < 8) {return 0;}int day = 0;int[] index = new int[7];int a1 = a / 8; //计算A饲料一共可以吃多少天int b1 = b / 5; //计算B饲料一共可以吃多少天int c1 = c / 7; //计算C饲料一共可以吃多少天int periodicity = 0; //周期数while (true){a1-=3; //计算A饲料一共可以吃多少周b1-=2; //计算B饲料一共可以吃多少周c1-=2; //计算C饲料一共可以吃多少周if (a1<0||b1<0||c1<0){break;}periodicity++; //最后得出一共吃了几个星期}index[5] = a; //将A饲料的总数存入index[5]中index[6] = b; //将B饲料的总数存入index[6]中index[3] = c; //将C饲料的总数存入index[3]中for (int j = 0; j <= periodicity; j++) {for (int i = 0; i < index.length; i++) {if (i == 0 || i == 4 || i == 5) {if(i == 4){index[4] = index[0];}if(i == 5){index[5] = index[4];}if(i == 0){index[0] = index[5];}index[i] -= 8;} else if (i == 1 || i == 6) {if(i == 1){index[1] = index[6];}if(i == 6){index[6] = index[1];}index[i] -= 5;} else if (i == 2 || i == 3) {if(i == 2){index[2] = index[3];}if(i == 3){index[3] = index[2];}index[i] -= 7;}if(index[i] < 0){break;}day++;}}return day;}
}
题目二:
小美得到了一个只包含’0’和’1’两种字符的字符串,现在她可以往这个字符串的任意位置添加任意个字符’1’,请问她至少需要添加多少个字符’1’才能使添加后的字符串是一个回文串? 输入描述 第一行一个整数T,表示有T组数据。 接下来T行,第i行是一个只包含’0’和’1’两种字符的字符串si。 1<=T<=10, 1<=字符串si的长度<=100000 输出描述 T行,每行一个整数,其中第i行表示输入描述中的字符串si至少需要添加多少个字符’1’使其变成回文串。 样例输入 4 10101 00001 01001101 1110 样例输出 0 1 2 3 样例解释 添加的字串用[]示意: 10101=>10101,无需添加即是回文串。 00001=>[1]00001 01001101=>[1]01[1]001101 1110=>1110[1][1][1]
public class TestDemo2 {public static void main(String[] args) {//判断回文/*** 测试用例*/
// String str = "101010"; //至少添加1个
// String str = "10101"; //至少添加0个
// String str = "00001"; //至少添加1个
// String str = "001001101"; //至少添加4个 [1]001001101-->[1]0[1]01001101-->[1]0[1][1]01001101-->[1]0[1][1]010[1]01101
// String str = "1110"; //至少添加3个
// String str = "0010"; //至少添加1个
// String str = "01001101"; //至少添加2个Scanner sc = new Scanner(System.in);System.out.println("输入要判断的行数:");int n = sc.nextInt();for (int i = 1; i <= n; i++) {System.out.println("请输入字符串:");add(sc.next());}
// System.out.println("请输入字符串:");
// String str = sc.nextLine();
// add(str);}public static void add(String str){LinkedList<Character> linkedList = new LinkedList<Character>();for (int i = 0; i < str.length(); i++) {linkedList.add(str.charAt(i));}int count = 0;int i = 0;int j = linkedList.size()-1;while (i<=j){for (i = 0,j = linkedList.size()-1; i < linkedList.size(); i++,j--) {if(linkedList.get(i)==linkedList.get(j)){continue;}else {if(linkedList.get(j).equals('0')){linkedList.add(j+1, '1');count++;break;} else if (linkedList.get(i).equals('0')) {if(i==0){linkedList.addFirst('1');}else {linkedList.add(i,'1');}count++;break;}}}}for (int k = 0; k < linkedList.size(); k++) {System.out.print(linkedList.get(k));}System.out.println("至少需要添加"+count+"个1");}
}
题目三:
时间限制: 3000MS 内存限制: 589824KB 题目描述: 小团在一个无限长的一维坐标轴上玩一个探险游戏,初始时他位于原点,并有k点体力。每往正方向走一格(无法往反方向移动)需要消耗一点体力。要求小团在任何时刻体力都不能小于零。已知坐标轴上有n个坐标上有体力药水,到达这些坐标时,可以恢复一定量的体力。小团想知道,他所能到达的最远坐标是多远? <p> 输入描述 第一行两个正整数k、n,分别表示小团初始有k点体力,以及坐标轴上有n个坐标上有体力药水。 接下来一行n个正整数,第i个数xi表示在xi这个坐标上有体力药水。(xi互不相同) 接下来一行n个正整数,第i个数ti表示在xi这个坐标上的体力药水可以恢复ti点体力。 1<=k <=2000000, 1<=n<=20000,1<=xi<=100000000,1<= ti<=10000 输出描述 一行一个正整数,表示小团所能到达的最远坐标。 样例输入 5 2 6 3 1 2 样例输出 8 提示 样例解释1 初始有5点体力,到达坐标3时还剩余2点体力,补充2点,共余4点; 到达坐标6时还剩下1点,补充1点,共余2点; 耗尽体力时处于坐标8。 输入样例2 2 1 2 1 输出样例2 3 样例解释2 初始有2点体力,在坐标2补充1点体力到达坐标3。 输入样例3 2 1 3 1 输出样例3 2 样例解释3 初始有2点体力,到达坐标2耗尽体力停止。
public class TestDemo3 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入初始体力和药水总数:");int initialValue = sc.nextInt();; //初始体力int liquidMedicine = sc.nextInt(); //坐标上药水的总数int[] x = new int[liquidMedicine]; //每瓶药水所在坐标int[] t = new int[liquidMedicine]; //对应坐标上每瓶药水的恢复体力值System.out.println("请输入每瓶药水所在坐标:");for (int i = 0; i < liquidMedicine; i++) {x[i] = sc.nextInt();}System.out.println("请输入对应坐标上每瓶药水的恢复体力值:");for (int i = 0; i < liquidMedicine; i++) {t[i] = sc.nextInt();}HashMap<Integer, Integer> coord = new HashMap<Integer, Integer>();if(liquidMedicine>0){for (int i = 0; i < liquidMedicine; i++) {coord.put(x[i], t[i]);}}Set<Integer> set = coord.keySet();int count=0;while (initialValue>0){count++;for (Integer integer : set) {if(count==integer){ //到达药水位置initialValue+=coord.get(integer); //获得体力}}initialValue--;}System.out.println(count);}
}
2022Java后端之美团笔试题相关推荐
- Java后端之美团笔试题
更新的时间:2022-5-7笔试 今天下午考的笔试,好难,我把题目贴这里,会做的大佬贴一下思路吧!!! 题目一: 小团饲养了一小缸鱼,并且买了A.B.C三类饲料来喂养它们,小团的饲养计划如下: -- ...
- 美团笔试题 淘汰分数
美团笔试题 淘汰分数 某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2-.a_n,小美作为比赛的裁判希望设定一个分数线m,使得所有分数大于m的选手晋级,其他 ...
- 2018 java 美团笔试题
想进美团的同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下 [2018 java 美团笔试题] 技术一面 1.我们先聊聊java基础知识吧,说出Object类的常用方法? 2.刚刚说到o ...
- 美团笔试题2021.8.29(第四题求大佬解答)
美团笔试题2021.8.29 又再帮同学写,推了这周的周赛,侥幸都有点思路 丁香树 题目描述 思路 因为芳香值最大为30,所以用一个数组存储已走过的芳香值,然后走到第i个点,找比当前芳香值小的有多少个 ...
- 美团笔试题之查找幸运星
美团笔试题之查找幸运星 题目其实很简单,特别简单,当时看一眼题目我心中就有思路了,问题就是我卡在了如何循环输入上了,简直是不可思议, 当时我想复杂了,现在看来如此简单的问题我卡了这么久,实在是不应该啊 ...
- 美团笔试题 小美的跳方格
看到一道美团(不知道什么时候)的笔试题,问题描述如下: 在网上查到过其他网友的解法,感觉和我的理解不太一样, 这里写一下我自己对题目的理解. 我比较疑惑的是小美跳方格的方式,是每次移动一格,还是可跳到 ...
- [笔试题目] 美团2015年9月后端开发工程师笔试题
由于题目是我通过草稿回顾,可能表述不清,但是内容大致一样.希望该博客内容对你有所帮助,题目所有权归美团公司所有,我只是想分享给大家学习,还望贵公司海涵~ 面试职位 应聘职位:后端开发工程师 岗位描述: ...
- 【web后端开发】笔试题收集
4399Web后端开发笔试题 题目来源:牛客网 1.linux中,用mkdir命令创建新的目录时,如果需要在其父目录不存在时先创建父目录的选项是 D A -h B -d C -f D -p [ ...
- 字节跳动2019春招后端开发工程师-笔试题解析
一.简介 字节跳动2019春招第三批在线笔试(后端开发工程师)已结束,结果也是凉凉.本文主要是分析这次的题目,并给出代码,以供大家参考和讨论,如有错误之处,还望帮忙指正,谢谢每位优秀的程序员. 二.题 ...
- 美团笔试题:股票交易日
在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益. ...
最新文章
- bugku 杂项 就五层你能解开吗_你能解开这个和数字有关的逻辑解谜游戏吗? | 每日一考...
- Gamma阶段第一次scrum meeting
- 轻断食是一种科学的减肥方法吗?
- 我们破解了几乎所有智能手机的人脸识别,唯独没有iPhone
- [WC2018]通道——边分治+虚树+树形DP
- Xamarin Anroid开发教程之验证环境配置是否正确
- java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解...
- 常用代码生成工具介绍
- 用函数计算搭建页面的前端CICD系统,提升访问体验
- Frame - 快速创建高品质的 Web 应用原型
- mysql内外三种连接_mysql之内连接,外连接(左连接,右连接),union,union all的区别...
- 蓝桥杯 入门训练 A+B问题进阶版(两个3000位数的加法)
- html5 crop,HTML5内联SVG autocrop空格
- windows使用命令或批处理文件打开远程桌面
- 19清明假前一周安排
- OneRel: Joint Entity and Relation Extraction with One Module in One Step
- 学习笔记——STM32摄像头OV7725(一)
- 南京市城乡地籍信息一体化管理的几点思考
- 《Java修炼指南:高频源码解析》阅读笔记一Java数据结构的实现集合类
- 使用gatekeeper限制kubernetes创建特定类型的资源