内存池

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] opers = new int[n][2];
        boolean[] map = new boolean[100];
        ArrayList<int[]> res = new ArrayList<>();
        ArrayList<Object> res1 = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String line = scanner.next();
            String oper = line.split("=")[0];
            int size = Integer.parseInt(line.split("=")[1]);
            if (oper.equals("REQUEST")) {
                // 新增
                int[] r = add(size, map, 1, 0, 0);
                if (r[2] == -1) {
                    res1.add("error");
                }else {
                    res1.add(r[0]);
                }
                res.add(r);
            } else {
                int index = size;
                int len = -1;
                for (int[] r :
                        res) {
                    if (r[0] == index) {
                        len = r[1];
                        release(size, map, len);
                    }
                }
                if (len == -1){
                    res1.add("error");
                }


            }
        }
    }

    private static void release(int index, boolean[] map, int len) {
        for (int i = 0; i < len; i++) {
            map[i+index] = false;
        }
    }

    private static int[] add(int size, boolean[] map, int len, int head, int current) {
        if (size < len) {
            return new int[]{head, head + len -1, 1};
        }
        if (current > map.length) {
            release(head,map,len);
            return new int[]{head, current, -1};
        }
        if (len > 1 && map[current]){
            release(head,map,len);
            len=1;
        }
        if (map[current]) {
            head = current;
            if (!map[current+1]){
                head++;
            }
        }
        if (!map[current]) {
            len++;
            map[current] = true;
        }
        return add(size, map, len, head, current + 1);
    }

全部评论
啥题啊这是
点赞 回复 分享
发布于 2022-08-05 18:59

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务