zoukankan      html  css  js  c++  java
  • 美团笔试

    一、逻辑推理题*20

    二、专业基础*30

    考的比较杂,但是基本上不难

    1、各种排序的时间空间复杂度

    2、测试基本路径

    3、居然考了编译原理

    4、阅读代码

    5、比较简单的基础题

    三、编程题*2

    1、给定字符串:包含‘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 }

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

    输入:n(点的个数)

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

    2*n-3即可得
  • 相关阅读:
    Spring Boot 使用 Dom4j XStream 操作 Xml
    Spring Boot 使用 JAX-WS 调用 WebService 服务
    Spring Boot 使用 CXF 调用 WebService 服务
    Spring Boot 开发 WebService 服务
    Spring Boot 中使用 HttpClient 进行 POST GET PUT DELETE
    Spring Boot Ftp Client 客户端示例支持断点续传
    Spring Boot 发送邮件
    Spring Boot 定时任务 Quartz 使用教程
    Spring Boot 缓存应用 Memcached 入门教程
    ThreadLocal,Java中特殊的线程绑定机制
  • 原文地址:https://www.cnblogs.com/lizijiangmm/p/8634782.html
Copyright © 2011-2022 走看看