美团笔试3道多选+算法题2.92/4

第一题 91%

package meituan;

import java.nio.file.Path;import java.util.ArrayList;import java.util.List;import java.util.Scanner;

public class test1 {public static void main(String[] args){Scanner in = new Scanner(System.in);int enemysNum = in.nextInt();int a = in.nextInt();int b =in.nextInt();List<int[]> pos = new ArrayList<>();for(int i=0 ; i<enemysNum ; ++i){int x = in.nextInt();int y = in.nextInt();pos.add(new int[] {x,y});}

    //System.out.println("d");
    int ans=0;
    for(int i=0 ; i<enemysNum ; ++i){
        int count=1;
        List<Integer> list = new ArrayList<>();
        list.add(i);
        for(int j=0 ; j<enemysNum ; ++j){
            if(j==i){
                continue;
            }
            int k=0;
            for(; k<list.size() ; ++k){
                if(Math.abs(pos.get(list.get(k))[0]-pos.get(j)[0])>a || Math.abs(pos.get(list.get(k))[1]-pos.get(j)[1])>b){
                    break;
                }
            }
            if(k==list.size()){
                ++count;
                list.add(j);
            }


        }
        ans = Math.max(ans, count);
    }
    System.out.println(ans);
 }
}

第二题 A


package meituan;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class test2 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int len = in.nextInt();
        int k = in.nextInt();
        int[] nums = new int[len];
        for(int i=0 ; i<len ; ++i){
            nums[i] = in.nextInt();
        }
        int maxLen=0;
        for(int i=0 ; i<len ; ++i){
            Set<Integer> set = new HashSet<>();
            for(int j=i ; j<len ; ++j){
                if(!set.contains(nums[j])){
                    set.add(nums[j]);
                    if(set.size()>k){
                        maxLen = Math.max(j-i, maxLen);
                        break;
                    }
                }
            }
        }
        System.out.println(maxLen);


    }
}

第三题:91%

package meituan;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class test3 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        int n = s.length();
        int start;

        List<int[]> wrongPos = new ArrayList<>();
        start = n/2;
        int left=start-1, right=start+1;
        if(n%2 == 0){
            right = start;
        }
        while(left>=0 && right<n){
            if(s.charAt(left) != s.charAt(right)){
                wrongPos.add(new int[]{left, right});
            }
            --left;
            ++right;
        }
        //System.out.println(wrongPos.get(0)[0] +" "+ wrongPos.get(0)[1] );
        if(wrongPos.size() == 0){
            StringBuilder sb = new StringBuilder(s);
            for(int i=0 ; i<n ; ++i){

                if(sb.charAt(i) > 'a'){
                    sb.setCharAt(i, 'a');
                    sb.setCharAt(n-i-1,'a');
                    break;
                }
            }
            System.out.println(sb.toString());
        }

        else if(wrongPos.size() == 1){
            StringBuilder sb = new StringBuilder(s);
            if(sb.charAt(wrongPos.get(0)[0]) > sb.charAt(wrongPos.get(0)[1])){
                sb.setCharAt(wrongPos.get(0)[0], sb.charAt(wrongPos.get(0)[1]));
            }
            else{
                sb.setCharAt(wrongPos.get(0)[1], sb.charAt(wrongPos.get(0)[0]));
            }
            if(n%2 == 1){
                sb.setCharAt(n/2, 'a');
            }
            System.out.println(sb.toString());
        }

        else{//两个不同的情况
            StringBuilder sb = new StringBuilder(s);
            if(sb.charAt(wrongPos.get(0)[0]) > sb.charAt(wrongPos.get(0)[1])){
                sb.setCharAt(wrongPos.get(0)[0], sb.charAt(wrongPos.get(0)[1]));
            }
            else{
                sb.setCharAt(wrongPos.get(0)[1], sb.charAt(wrongPos.get(0)[0]));
            }

            if(sb.charAt(wrongPos.get(1)[0]) > sb.charAt(wrongPos.get(1)[1])){
                sb.setCharAt(wrongPos.get(1)[0], sb.charAt(wrongPos.get(1)[1]));
            }
            else{
                sb.setCharAt(wrongPos.get(1)[1], sb.charAt(wrongPos.get(1)[0]));
            }

            System.out.println(sb.toString());
        }



    }
}

第四题 应该能A过,但是最后没编译成功,所以A了0~~~

package meituan;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class test4 {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        int money = in.nextInt();
        int y = in.nextInt();
        //System.out.println(num+" "+money+" "+y);

        List<int[]> goodsList = new ArrayList<>();
        for(int i=0 ; i<num ; ++i){
            int ori = in.nextInt();
            int pst = in.nextInt();
            goodsList.add(new int[]{ori, pst});
        }

        dfs(goodsList, money, 0, y, 0, 0);
        System.out.println(maxGood+" "+minCost);


    }
    static int maxGood = 0;
    static int minCost = Integer.MAX_VALUE;

    public static void dfs(List<int[]> list, int money, int cost, int y, int gn, int index){

        if(y<0 || money<0 || index>list.size()){
            return;
        }
        System.out.println(gn +" "+cost+ " " +index+" "+y);
        if(money>=0){
            if(maxGood < gn){
                maxGood = gn;
                minCost = cost;
            }
            else if(maxGood == gn){
                minCost = Math.min(minCost, cost);
            }

        }
        System.out.println(maxGood +" "+minCost);
        System.out.println();

        if(index == list.size()){
            return;
        }
        dfs(list, money-list.get(index)[0], cost+list.get(index)[0], y, gn+1, index+1);
        if(y>0){
            dfs(list, money-list.get(index)[1], cost+list.get(index)[1], y-1, gn+1, index+1);
        }
    }
}

全部评论
第四题太难受了。最后发现错误本地没问题,结果放到赛格上时间到了
点赞 回复 分享
发布于 2023-03-18 12:26 江苏
第四题加个状态 不选dfs(list, money, cost, y, gn, index+1)
点赞 回复 分享
发布于 2023-03-18 12:35 江苏
为啥我5题全是算法
点赞 回复 分享
发布于 2023-03-18 12:49 重庆
大佬投的是后端吗
点赞 回复 分享
发布于 2023-03-18 14:20 湖北

相关推荐

学不完不睡觉11:一眼点评,不过,看运气吧
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好
点赞 评论 收藏
分享
评论
9
7
分享

创作者周榜

更多
牛客网
牛客企业服务