首页 > 8/8 美团测开笔试题目
头像
一个名字ssssp
编辑于 2021-08-10 09:18
+ 关注

8/8 美团测开笔试题目

基本都被卡64%通过率。。。
题目一:输入nMax个数的数组, 找恰好有num个数大于的一个阈值。可能有重复数字
import java.util.Arrays;
import java.util.Scanner;

public class meituan1 {


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for(int i = 0;i < n;i ++){
            int nMax = scanner.nextInt();
            int num = scanner.nextInt();
            int[] ints = new int[nMax];
            for(int j = 0 ;j < nMax;j ++){
                ints[j] = scanner.nextInt();
            }
            int i1 = find(ints, nMax, num);
            if(i1 == -1){
                System.out.println("NO");
            }else{
                System.out.println("YES");
                System.out.println(i1);
            }
        }


    }

    private static int find(int[] ints, int nMax, int num) {
        int res = -1;
        if(ints.length < 0){
            return  res;
        }else{
            Arrays.sort(ints);
            int count = 1;
            for(int i = 1;i < ints.length; i++){
                count ++;

                if (count == nMax ){
                    break;
                }

                if(count == num ){
                    if(i+1 < ints.length && ints[i + 1] != ints[i]){
                        res = ints[i]+1;
                    }else if(i == ints.length - 1){
                        res = ints[i]+1;
                    }

                }


            }
        }
        return res;
    }
}

题目二:清洗数组,清洗掉空格和紧挨着的重复字符
package com.mianshi;

import java.util.Scanner;

public class meituan2 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String next = scanner.nextLine();
        String replace = next.replace(" ", "");
        System.out.println(replace);
        if(replace.length() == 1){
            System.out.println(replace);
        }else {
            for (int i = 1; i < replace.length();) {
                if (replace.charAt(i) == replace.charAt(i - 1)){

                    replace = replace.substring(0,i) + replace.substring(i+1,replace.length());

                }else{
                    i ++ ;
                }
            }
            System.out.println(replace);
        }

    }
}

题目三:输入一个数组ints,根据这个数组生成一个新的数组dp,i位置的数值是不大于ints[i]的前1~i的最大的那个数,求新数组的dp[i]*i 之和,i=1 ~n

package com.mianshi;

import java.util.Scanner;

public class meituan3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] ints = new int[n + 1];
        int[] dp = new int[n+1];
        long res = 0;
        for(int i = 1;i <= n;i ++){
            ints[i] = scanner.nextInt();
        }
        for(int j = 1;j <= n; j++){
            for(int k = 0 ;k < j;k++){
                if(ints[k] < ints[j]){
                dp[j] = Math.max(dp[j],ints[k]);}
            }

            res += dp[j]*j;
        }
        System.out.println(res);
    }
}
题目四:将一个数组左半和右半变成一样的操作数。
package com.mianshi;

import java.util.Scanner;

public class meituan4 {


    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] ints1 = new int[n/2];
        int[] ints2 = new int[n/2];
        int res = 0;
        for(int i = 0;i < n;i ++){
            if(i < n/2){
                ints1[i] = scanner.nextInt();
            }else{
                ints2[i - n/2] = scanner.nextInt();
            }
        }
        for(int i = 0;i < n/2;i ++){
            if (ints1[i] != ints2[i]){
                res ++;
            }
        }
        System.out.println(res);
    }
}
题目五:设计一个测试用例,测试用户密码的登陆功能。

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐