首页 > 解决方案 > 哪个测试用例导致运行时错误?

问题描述

这是 2020 年编码堵塞问题之一,附有下面的链接(回合已完成),虽然我无法重现它,但谷歌引擎报告说即使对于小型测试用例,这也是一个运行时错误。它几乎可以处理我扔给它的任何测试用例。也许我错过了一个边缘案例,但不确定它是什么。

我的理解是这是 O(N) 性能。它真正做的只是检查布尔子数组是否空闲(假),如果是,则将任务分配给该子数组(真),可能进行 2N 次比较。

https://codingcompetitions.withgoogle.com/codejam/r​​ound/000000000019fd27/000000000020bdf9

import java.util.*;
import java.io.*;

//Parenting Partnering Returns
public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        int t = in.nextInt(); // Scanner has functions to read ints, longs, strings, chars, etc.
        for (int ijk = 1; ijk <= t; ++ijk) {

            int N = in.nextInt();
            String ans;
            StringBuilder sb = new StringBuilder();
            boolean[] cal = new boolean[1442];
            boolean[] jal = new boolean[1442];
            int si, se;
            boolean canC,canJ, isPossible = true;

            for (int i = 0 ; i < N ; i++) {
                si = in.nextInt();
                se = in.nextInt();
                canC = false; canJ = false;

                if (cal[si + 1] == false && cal[se] == false || cal[si] == false && cal[se -1] == false) {
                    for (int j = si ; j <= se; j++) cal[j] = true;
                    sb.append('C'); canC = true; continue;

                } else if (jal[si + 1] == false && jal[se] == false || jal[si] == false && jal[se -1] == false) {
                    for (int k = si ; k <= se; k++) jal[k] = true;
                    sb.append('J'); canJ = true; continue;
                } else {
                    isPossible = false;
                    break;
                }
            }

            ans = sb.toString();

            if(isPossible)
            System.out.println("Case #" + ijk + ": " + ans);
            else System.out.println("Case #" + ijk + ": " + "IMPOSSIBLE");
        }
        //in.close();
    }

}

标签: javaarraysruntime-errorbig-o

解决方案


推荐阅读