这几天做了下美团校招的一些套题。(只写了编程,这两天慢慢更新吧)

这套题还是蛮简单的。。我暴力了好几个都能过。一个小时多一点差不多能写完。

4、棋子翻转

题意:在4*4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。

题解:这题有点坑,输入输出数据类型都是字符串,我可能leetcode刷多了以为是vector然后一直报段错误。

我用了极其暴力的手法做了输入的处理。。因为这个字符串是固定了长度的。。所以。。看代码吧。

代码:

1 #include

2 using namespacestd;3 int mp[5][5];4 int pos[4][4];5 strings;6 stringp;7

8 voidinit(){9 cin>>s;10 cin>>p;11 mp[0][0] = s[2]-‘0‘;12 mp[0][1] = s[4]-‘0‘;13 mp[0][2] = s[6]-‘0‘;14 mp[0][3] = s[8]-‘0‘;15

16 mp[1][0] = s[12]-‘0‘;17 mp[1][1] = s[14]-‘0‘;18 mp[1][2] = s[16]-‘0‘;19 mp[1][3] = s[18]-‘0‘;20

21 mp[2][0] = s[22]-‘0‘;22 mp[2][1] = s[24]-‘0‘;23 mp[2][2] = s[26]-‘0‘;24 mp[2][3] = s[28]-‘0‘;25

26 mp[3][0] = s[32]-‘0‘;27 mp[3][1] = s[34]-‘0‘;28 mp[3][2] = s[36]-‘0‘;29 mp[3][3] = s[38]-‘0‘;30

31 pos[0][0] = p[2]-‘0‘;32 pos[0][1] = p[4]-‘0‘;33

34 pos[1][0] = p[8]-‘0‘;35 pos[1][1] = p[10]-‘0‘;36

37 pos[2][0] = p[14]-‘0‘;38 pos[2][1] = p[16]-‘0‘;39

40 }41

42 intmain(){43 init();44 intx,y;45 for(int i = 0; i < 3; i++){46 x = pos[i][0];47 y = pos[i][1];48 x--;y--;49 if(x-1 >= 0)50 mp[x-1][y] = !mp[x-1][y];51 if(x+1 < 4)52 mp[x+1][y] = !mp[x+1][y];53 if(y-1 >= 0)54 mp[x][y-1] = !mp[x][y-1];55 if(y+1 < 4)56 mp[x][y+1] = !mp[x][y+1];57 }58 cout<

69 return 0;70 }

View Code

5、寻找最后的山峰

题意:山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设 nums[-1] = nums[n] = -∞。

题解:感觉也是一个模拟。。一次循环,判断一下左右,满不满足条件。因为是找索引最大。。遍历完就行了。

最后找一个特判,就是最后一个数是不是大于左边的数就可以了。

优化当然也是可以,用二分可行。

代码:

1 #include

2 using namespacestd;3

4 vectornum;5 intmain(){6 intn;7 while(cin>>n){8 num.push_back(n);9 }10

11 int len =num.size();12 int pos = 0;13 for(int i = 1 ;i < len-1; i++){14 if(num[i]>=num[i+1] && num[i]>=num[i-1]){15 pos =i;16 }17 }18

19 if(num[len-1] > num[len-2]) pos = len-1;20 cout<

22 return 0;23 }

View Code

6、比大小

题意:给定一个整数数组,返回一个数组。该返回数组中第i个数字为,原数组中第i个位置的数字至少往右走多少步才能遇到比它大的数字。如果遇不到或者已经处于最右的位置,则置为-1。

题解:这个题暴力是会超时的。做优化。参考了一下讨论区大佬的代码,用单调栈做处理。

这样每次比较栈顶元素和当前元素,我们保存栈顶元素的这个步数就好了,也就是找栈顶的大元素。

友情提示:切c++14编译器。

代码:

1 #include

2 using namespacestd;3 const int maxn = 1e6+10;4

5 intnum[maxn];6 int ans[maxn]={0};7 intmain(){8 intn;9 cin>>n;10 for(int i = 0; i < n ;i++){11 cin>>num[i];12 ans[i] = -1;13 }14 stacks;15

16 int cnt = 0;17 while(cnt

29 for(int i = 0; i < n ;i++){30 cout<

33 return 0;34 }

View Code

7、关联查询

题意:数据对象data1List,员工表,存储员工ID,员工姓名

数据对象data2List, 员工工作时长表,存储员工ID,月份,工时

计算每个员工1-3月每月工时及总工时

题解:我好像做复杂了。。就是一个模拟题。。我甚至怀疑只有一组数据。。理解题意就行了。

代码:

1 #include

2 using namespacestd;3 const int maxn = 1010;4

5 mapmp;6

7 structmember{8 intid;9 stringname;10 intsumtime;11 };12

13 member peo[maxn];14

15 intmain(){16 int cnt = 0;17 while(cin>>peo[cnt].id>>peo[cnt].name){18 intid;19 stringmonth;20 inttime;21 cin>>id;22 for(int i = 0; i < 3; i++){23 cin>>month>>time;24 mp[month] =time;25 }26 peo[cnt].sumtime = mp["01"]+mp["02"]+mp["03"];27 cout<

31

32 return 0;33 }

View Code

8、滑动窗口的中位数

题意:在实时计算中,数据流源源不断地流入计算单元,经常需要借助窗口来处理数据,其中有一类窗口为滑动窗口(Sliding Window),其特点是窗口长度固定,每次滑动一定的位移(slide)

现给定一个数组 nums,有一个长度为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。注意你只可以看到在滑动窗口 k 内的数字,滑动位移大小slide=1,即滑动窗口每次只向右移动一位。

要求返回每一个滑动窗口内的中位数,解释中位数定义,例如:对于[2,3,4],中位数是3;对于[2,3],中位数是 (2 + 3) / 2 = 2.5

注意:为了简化窗口计算,规定如果没有累计到窗口大小的数,不能触发计算,即不输出结果!

题解:暴力可过。每次对窗口里的元素排序,得到中位数即可。

代码:

1 #include

2 using namespacestd;3 const int maxn = 1010;4

5 doublenum[maxn];6 vectorres;7 intmain(){8 intn,k;9 cin>>n>>k;10 for(int i = 0; i < n; i++){11 cin>>num[i];12 }13 int flag = 0;14 if(k%2) flag = 1;15

16 for(int i = 0; i <= n-k; i++){17 for( int j = i; j < i+k ;j++){18 res.push_back(num[j]);19 }20 sort(res.begin(),res.end());21

22 if(flag) num[i] = res[k/2];23 else num[i] = (res[k/2 - 1] + res[k/2]) / 2;24

25 res.clear();26 }27

28 for(int i = 0; i <= n-k; i++){29 printf("%.1lf",num[i]);30 }31

32 return 0;33 }

View Code

9、月份天数

题意:输入年份月份,请输出这个月的天数

题解:也是个做了很多遍的题。判断闰年。

闰年:1、能被4整除但是不能被100整除。2、能被400整除。

满足以上条件随便一个就行。

代码:

1 #include

2 using namespacestd;3

4 bool judge(intyear){5 if(year%4 == 0 && year%100) return true;6 if(year%400 == 0) return true;7

8 return false;9 }10

11 intmain(){12 intyear,month;13 while(cin>>year>>month){14 int flag = 0;15 if(judge(year)) flag = 1;16 if(month == 1 || month == 3 || month == 5 || month == 7||

17 month == 8 || month == 10 || month == 12){18 cout<<31<

View Code

10、整数分解

题意:一个正整数N可以分解为M(M>1)个正整数的和,即N=K+L,例如N=5、M=2时可以分解为(1+4,2+3)。

给定一个正整数N(1

题解:整数分解也是比较经典的题目。一般我会先用dfs,再用dp。

= =牛客这个编译器有毒,dfs得用c写才行。要不然报段错误。dfs超时,dp应该是正解。

但是都不给AC。我看讨论区也没人过,应该题目有点问题。。

我会给出两份代码。

1、dfs。普通爆搜一定会超时,所以这里说的dfs是做了剪枝处理的。枚举的时候从上一次的划分枚举到sum+i*(m-cur)<=n,因为后面再继续划分一定会大于当前所用分数。所以直接剪枝而不是枚举到n。

2、dp。dp[i][j]表示i可以分成j份的方案。i中分j份可以为:i-1中分j-1份,和i-j中分j份。

初始化只需要做一个dp[0][0]=1。

代码:

1 //深搜

2 #include

3 using namespacestd;4 intn,m;5 int cnt = 0;6

7

8 void dfs(int res,int sum,intcur){9 if(cur ==m){10 if(sum == n) cnt++;11 return;12 }13 for(int i = res; sum+i*(m-cur)<=n ; i++){14 dfs(i,sum+i,cur+1);15 }16

17 }18 intmain(){19 cin>>n>>m;20 dfs(1,0,0);21 cout<

23

24 return 0;25 }26

27

28

29 //dp

30 #include

31 using namespacestd;32 const int maxn = 210;33 intn,m;34 int dp[maxn][maxn]={0};35

36 intmain(){37 cin>>n>>m;38 dp[0][0] = 1;39

40 for(int i = 1; i <= n ;i++){41 for(int j = 1; j <= m ;j++){42 dp[i][j] += dp[i-1][j-1];43 if(i>=j) dp[i][j]+=dp[i-j][j];44 }45 }46

47 cout<

49 return 0;50 }

View Code

原文:https://www.cnblogs.com/Asumi/p/12521613.html

美团校招php笔试题,【美团点评】2020校招数据分析方向笔试题相关推荐

  1. 美团点评2020年测试工程师笔试题

    VOL 155 04 2020-09 今天距2021年118天 这是ITester软件测试小栈第155次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  2. 青岛医院计算机招聘试题及答案,2020青岛市妇女儿童医院招聘试题及答案解析...

    2020青岛市妇女儿童医院招聘试题及答案 解析 (网络整理,题目顺序与原题可能不一致) 1. 旧唯物主义反映论的根本缺陷是_____. A: 坚持先驳论 B: 坚持不可知论 C: 离开了社会实践,没有 ...

  3. 美团点评2020校招系统开发方向笔试题(编程题题解)

    这套笔试题的编程题很简单,感觉没什么可以写的题解的 [编程题]大数加法 注意下负号的情况 #include <bits/stdc++.h> using namespace std; typ ...

  4. 【美团点评2020校招测试方向笔试题】算法题部分1.删除字符 2.队列组合排序 3.寻找最小子字符串 4.最大矩形 5.最短送餐路程计算

    做题网址:点击进入 1.[编程题]删除字符 将给定的字符串,按照规则删除字符,输出删除后的字符串.删除规则为:相同字符连续,则删除,如"aaaab"删除后的字符串为"b& ...

  5. 美团点评2020校招测试方向笔试题

    一: 直接输出, 用flag记录是否有答案,一次循环,时间复杂度O(n). 代码 #include <iostream> #include <cstring> #include ...

  6. 美团点评2020校招前端方向笔试题

    五:斐波那契数列 代码 #include <iostream> #include <cstring>using namespace std; typedef long long ...

  7. 美团点评2020校招数据分析方向笔试题

    说明关系型数据库通过索引提升查询效率的背后原理 . 如果没有索引,数据库引擎需要通过全表扫描来查找数据,这会产生大量的磁盘IO. 关系型数据库使用B+树构建索引来加速加快查询.B+树是一种二叉查找树( ...

  8. 牛客_美团点评2020校招前端笔试题(仅个人学习记录)

    1.(问答题) 题目描述 class A { String i = "op"; void func(String s) { s = ""+9; } static ...

  9. 美团点评2020校招笔试题1(栈,堆)

    题目 官方答案 我查了一些资料: js中的堆内存与栈内存在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean ...

最新文章

  1. java 小数精确_Java中小数精确计算
  2. 从这个11.11开始,终结数据结构与算法的噩梦
  3. OpenVINO 2020版没有cpu_extension.dll问题解决
  4. 赤峰市职称计算机,关注丨赤峰今年评职称最新政策全在这……
  5. python 月报_python实践--月报分析之获取jira缺陷数据
  6. PowerDNS管理工具开发中学习到的DNS知识
  7. python 仅保留数字_Python基本语法元素 | 语法元素分析
  8. SAP License:中国集团管控存在的主要问题-已加入点评
  9. 如何让开关打开_汽车油箱盖如何打开?老司机:不外乎这三种方式
  10. Riverbed“不再只是一家广域网优化公司”
  11. Linux权限命令chmod
  12. 虎牙代理php,huya虎牙PHP
  13. word文字怎么竖向排列_word怎么把字体竖着 如何在WORD中竖排文字
  14. python的编码解码是什么意思_python - 这是什么编码,如何解码
  15. 广州互联网公司面试地图
  16. C/C++中#和##的宏以及进行“花里胡哨“的命名及其应用
  17. yolov5的detect.py代码详解
  18. 华硕 内存条 不同步_千元级的RGB台式内存条——让你的主机流光溢彩
  19. [解读] Unsupervised Feature Learning via Non-Parametric Instance Discrimination
  20. 2021威海高考成绩查询,2021年威海夏季高考时间公布

热门文章

  1. 慕容垂:百万战骨风云里——激荡的鲜卑史略之二(转载)
  2. 晶体谐振器和晶体振荡器的优缺点分析
  3. CATT在SAP系统中的应用
  4. Joshua Bloch
  5. 如何在页面完美显示版权符号(转)
  6. 方程:方程(equation)是指含有未知数的等式
  7. 武汉卫星地图商用级别19级 来自百度卫星地图
  8. 我栋楼几个人共享上网,别人过量占用带宽,平均分网速
  9. 8.node多进程之spawn
  10. String s=new String(xback)和String s=xback的区别?