9.4携程笔试

今晚携程第三题 ; 提示我有非法越界 ; 检查不出来 ; 大牛们看一下

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;
public class Main3{
    static Queue<Integer> q=new LinkedList<Integer>();
    static Map<Integer,Integer> map=new HashMap<Integer,Integer>();
    static int max;
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        max=scan.nextInt();

        String str;
        int key;
        int value;
        while(scan.hasNext()){
            str=scan.next();
            if("p".equals(str)){
                key=scan.nextInt();
                value=scan.nextInt();
                if(map.containsKey(key)){
                    map.put(key, value);
                    continue;
                }
                if(map.size()>=max){
                    int re=duiLie(key);
                    map.remove(re);
                    map.put(key, value);
                }else{
                    q.offer(key);
                    map.put(key, value);
                }

            }else if("g".equals(str)){
                key=scan.nextInt();
                q.remove(key);
                q.offer(key);
                if(map.get(key)==null)
                    System.out.println(-1);
                else
                    System.out.println(map.get(key));

            }    
        }


    }
    public static int  duiLie(int x){
        int re=-1;
        if(q.size()>=max){
         
            re=q.poll();
            q.offer(x);

        }else{
            if(q.contains(x))
                q.remove(x);
            q.offer(x);
        }
        return re;

    }


}
#携程##笔试题目#
全部评论
我这个也只a了87.5,说是越界
点赞 回复 分享
发布于 2018-09-04 20:34
我也是不明原因的非法越界
点赞 回复 分享
发布于 2018-09-04 20:34
非法越界+1,87.5%+1,但是我是C++
点赞 回复 分享
发布于 2018-09-04 20:36
我也是
点赞 回复 分享
发布于 2018-09-04 20:40
考虑***容量为0的情况,就可以100%了
点赞 回复 分享
发布于 2018-09-04 20:45
➕1,整懵逼了都
点赞 回复 分享
发布于 2018-09-04 20:57
加1,百分之87.5
点赞 回复 分享
发布于 2018-09-04 21:01
LRU缓存中的容量n可能小于等于0,判断一下这个就100了
点赞 回复 分享
发布于 2018-09-04 21:07

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 7 评论
分享
牛客网
牛客企业服务