美团笔试

1、逻辑推理题*20java

2、专业基础*30编程

考的比较杂,可是基本上不难数组

一、各类排序的时间空间复杂度app

二、测试基本路径测试

三、竟然考了编译原理ui

四、阅读代码spa

五、比较简单的基础题code

3、编程题*2blog

一、给定字符串:包含‘0’~‘9’中任意个数的字符,输出该字符串不能组成的最小正整数排序

输入:123456789(字符串长度至少为1)

输出:10

解题思路:

首先,对各个数字出现的次数进行统计,用数组count[10]来记录

其次,总共分为两种状况:数字‘0’出现次数为0和不为0

count[0] = 0,又分为两种状况:

1)数字1~9都出现:找出出现次数count[i]最少的数字,如有多个则取最小的数字i,输出”iiiii“(次数为count[i]次)+”0“

2)数字1~9没有都出现:找出未出现的最小数字x,输出x

count[0] != 0状况

1)数字1~9都出现:找出出现次数最小且非0的数字x,输出count[x]+1次x

2)数字1~9没有都出现:找出次数为0且最小的数字输出

 1 import java.util.Scanner;
 2  3 
 4 public class Main {
 5     public static void main(String[] args){
 6         Scanner sc = new Scanner(System.in);
 7         String input = sc.next();
 8         int[] count = {0,0,0,0,0,0,0,0,0,0};
 9         
10         for (int i = 0; i < input.length(); i++) {
11             count[input.charAt(i)-'0']++;
12         }
13         //找出出现次数最少且最小的数字
14         int min = 10,t=0,sum = 0;
15         for(int i = 1 ;i<count.length;i++)
16         {
17             if (count[i]!=0) sum++;
18             if(min>count[i]) {
19                 min = count[i];
20                 t = i;
21             }         
22         }
23         if(sum == 0) 
24             {
25                 System.out.println("1");
26                 return;
27             }
28         //无0的状况
29         StringBuilder str = new StringBuilder();
30         if(count[0]==0) {
31             if(sum == 9) {
32                 int k = count[t];
33                 while(k>0) {
34                     str.append(t);
35                     k--;
36                 }
37                 str.append(0);
38                 System.out.println(str);
39             }
40             else
41                 System.out.println(t);
42         }
43         //有0的状况
44         else {
45             if(sum == 9) {
46                 int k = count[t]+1;
47                 while(k>0) {
48                     str.append(t);
49                     k--;
50                 }
51                 System.out.println(str);
52             }
53             else System.out.println(t);
54         }
55     }
56    
57 }

二、给一个圆,在圆上取n个点,每次取两个点连线,不能相交,最多能连多少条线?

输入:n(点的个数)

输出:x(最多能连多少条线)

2*n-3便可得
相关文章
相关标签/搜索