8.22 美团 笔试

4+1道编程题

  1. 没用正则表达式, 暴力法, ac。
  2. 很费解,不知道哪里错了,一直都是54%,,,求大佬指点。

```java
public class Main {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    HashMap<Integer,Integer> map = new HashMap<Integer, Integer>();

    for(int i= 1;i<=n;i++){
        int v = sc.nextInt();
        int w = sc.nextInt();
        int price = v+w*2;
        map.put(i,price);
    }

    PriorityQueue<Integer> queue = new PriorityQueue<Integer>((a,b)->{

        if(map.get(a) != map.get(b))  return  map.get(a)- map.get(b);
        return b-a;

    });

    for(int key:map.keySet()){
        queue.offer(key);
        if(queue.size()>m) queue.poll();
    }

    StringBuilder res = new StringBuilder();
    List<Integer> list = new ArrayList<Integer>();
    while(!queue.isEmpty()){
        list.add(queue.poll());
    }
    Collections.sort(list);

    for(int a :list){
        res.append(a+" ");
    }
    System.out.println(res.substring(0, res.length() - 1));

}

}

  1. 题都没读明白, 是这个堆是怎么分呐, 是子堆的两堆,还是一共只有两堆。。。样例给我的感觉是,只有两堆,按这个做的,只a了18%。。。不知道该咋分。。求大佬们指点一下
#笔试题目#
全部评论
我也是,1暴力AC,2卡在54,3卡在18;看大佬是什么树状数组,我总觉得自己把题目理解错了
点赞 回复 分享
发布于 2020-08-22 18:02
第17行比较的是字典序,要转为String比较
点赞 回复 分享
发布于 2020-08-22 18:04
第三题动态规划就行。
点赞 回复 分享
发布于 2020-08-22 18:05
头痛做题做的。
点赞 回复 分享
发布于 2020-08-22 18:05
第二题我也是54%,感觉完全没问题啊,第三题后一项加前一项,遇到删除的,就把他置为-1,然后他后面的都减去这个数,遇到-1截止,然后求个最大值就可以了
点赞 回复 分享
发布于 2020-08-22 18:10
第二题字典序
点赞 回复 分享
发布于 2020-08-22 18:11
第二题,有个隐藏条件,要求如果几个外卖他们价值相同的话,取先到的那个,就是要index最小
点赞 回复 分享
发布于 2020-08-22 18:14
第二题 代码
点赞 回复 分享
发布于 2020-08-22 18:15
第二题结果要按字典顺序输出,没看到这条件,浪费好长时间, 第三题暴力超出时间限制了,64%
点赞 回复 分享
发布于 2020-08-22 18:52
第二道题我直接循环删除最大值 A了  第三道题就是计算前缀后 然后去掉其中一个 把这个下标之后的前缀后重新计算, 然后直接循环计算最大值就好
点赞 回复 分享
发布于 2020-08-22 18:56

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
评论
1
4
分享
牛客网
牛客企业服务