2019春招美团笔试

昨晚笔试,今天来做笔试总结

选择题:刚开始是非技术的选择题

技术性选择题

编程题

首先记编程题:

题目好像是:一同学跑绕n*n的格子外围跑步,每次跑n+1步,然后在第n+1步的地方做一标记,问其做第几个标记的时候遇到重复标记的情况(包括重复格子那一次)。

输入:两行,第一行表示有m种格子操场

第二行表示格子的规模,即各种格子操场的n

输出:m行,每一行对应一种格子操场的标记次数

如输入:

2

4 8

输出:

17

33

思路:首先,这是一个循环遍历格子的过程,而且统计第一次重复遍历同一格时已经标记过的格子数。

故采用取余和map接口的方法进行程序编写,代码如下:

 1 import java.util.ArrayList;
 2 import java.util.Arrays;
 3 import java.util.List;
 4 import java.util.Map;
 5 import java.util.Scanner;
 6 import java.util.TreeMap;
 7  
 8 public class Main { 
 9     public static void main(String[] args) {
10         Scanner sc = new Scanner(System.in);
11         Main aa = new Main();
12         int n = sc.nextInt();
13         if (n == 0)
14             System.out.println(0);
15         int[] a = new int[n];
16         while (sc.hasNextInt()) {//注意while处理多个case
17             int b = aa.dianshu(sc.nextInt());
18             System.out.println(b);
19             }
20         }
21     public int dianshu(int n){
22         if (n == 0){
23             return 0;
24         }
25         Map<Integer, Integer> map = new TreeMap<Integer, Integer>();//利用map键值对的不可重复性来进行判断
26         while(true){         
27             for(int i=0;i%(n*4)<=n*n+1;i=i+n+1){ 
28                 int s = i%(n*4);//取余操作
29                 if(map.containsKey(s)){
30                     return map.size()+1;
31                 }                    
32                 else{
33                     map.put(s, 1);                    
34                 }
35                 }
36             }
37     }
38 }

如有纰漏,望提出。

然后是选择题中自己不熟悉的一些知识点:

1.无向图的深度遍历

2.for循环的实际执行过程

3.异常抛出时的过程

4.重载、覆盖

5.多态中子类和父类的关系

6.protected和private的访问权限

猜你喜欢

转载自www.cnblogs.com/10081-AA/p/10764725.html