美團筆試

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便可得
相關文章
相關標籤/搜索