Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我得到“;由于超时而终止”;在hackerRank的一些测试案例中,我如何解决这个问题?_Java_Performance_For Loop - Fatal编程技术网

Java 我得到“;由于超时而终止”;在hackerRank的一些测试案例中,我如何解决这个问题?

Java 我得到“;由于超时而终止”;在hackerRank的一些测试案例中,我如何解决这个问题?,java,performance,for-loop,Java,Performance,For Loop,我试图在HackerRank中解决这个问题,但在一些测试用例中我遇到了超时错误。有什么建议吗? 以下是我的代码; 大多数测试用例都可以工作,但其他测试用例会超时 public class Solution { static int[] rotation(int[] arr) { int[] rot = new int[arr.length]; rot[0] = arr[arr.length - 1]; System.arraycop

我试图在HackerRank中解决这个问题,但在一些测试用例中我遇到了超时错误。有什么建议吗? 以下是我的代码; 大多数测试用例都可以工作,但其他测试用例会超时

public class Solution
{
    static int[] rotation(int[] arr)
    {
        int[] rot = new int[arr.length];
        rot[0] = arr[arr.length - 1];
        System.arraycopy(arr, 0, rot, 1, arr.length - 1);
        return rot;
    }

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        int q = in.nextInt();
        int[] T = new int[n];

        for (int i = 0; i < n; i++) {
            T[i] = in.nextInt();
        }

        int[] indexes = new int[q];
        for (int j = 0; j < q; j++) {
            indexes[j] = in.nextInt();
        }
        in.close();

        // Rotations
        for (int ai = 0; ai < k; ai++) {
            T = rotation(T);
        }

        // Queries
        for (int qi = 0; qi < q; qi++) {
            System.out.println(T[indexes[qi]]);
        }
    }
}
公共类解决方案
{
静态int[]旋转(int[]arr)
{
int[]rot=新int[arr.length];
rot[0]=arr[arr.length-1];
系统阵列副本(arr,0,rot,1,arr.length-1);
返腐;
}
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
int n=in.nextInt();
int k=in.nextInt();
int q=in.nextInt();
int[]T=新的int[n];
对于(int i=0;i
是否可以将阵列旋转到位,而不是为每次旋转创建一个新阵列

static void rotation(int[] arr)
{
    int temp = arr[arr.length - 1];
    System.arraycopy(arr, 0, arr, 1, arr.length - 1);
    arr[0] = temp;
}
后来:

T = rotation(T);
变成:

rotation(T);

您还可以针对k小于n的情况进行优化,但如果您需要,我将把它作为练习留给您。

我使用ArrayList和LinkedList而不是arrays进行了尝试。但同样的结果。我不明白你的评论,在输入格式部分,它说我会在输入n,k和q的第一行,然后是表项。然后是包含我将输出的m个索引的q行。我就是这么做的。