由于大输入的黑客等级超时而终止

时间:2016-07-18 13:05:23

标签: java arrays

此代码在Hackerrank的某些大型输入上显示“由于超时而终止”错误,但在其他情况下工作正常。请帮我改进这段代码。

John Watson在一个整数数组上执行一个称为右旋转的操作。执行一次正确的循环旋转操作后,数组将转换为。

Watson执行此操作时间。为了测试Sherlock识别旋转数组中特定位置的当前元素的能力,Watson会询问查询,其中每个查询都包含一个整数,您必须在旋转数组中的索引处打印元素(即值)。

输入格式

第一行包含空格分隔的整数,,和。 第二行包含空格分隔的整数,其中每个整数描述数组元素(where)。 每个后续行包含一个表示的整数。

约束

输出格式

对于每个查询,在新行上打印旋转数组索引处的元素值。

示例输入

3 2 3 1 2 3 0 1 2 样本输出

2 3 1

我的代码

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        int n,k,q,temp=0,c=0;
        Scanner sc=new Scanner(System.in);
        try{
        n=sc.nextInt();
        k=sc.nextInt();
        q=sc.nextInt();
        int[] arr=new int[n];
        int qrr[]=new int[q];
        for(int i=0;i<n;i++)
            arr[i]=sc.nextInt();
        while(sc.hasNext()){
            qrr[c++]=sc.nextInt();
        }
        for(int j=1;j<=k;j++){
        temp=arr[n-1];
        for(int i=n-2;i>=0;i--){
            arr[i+1]=arr[i];
        }
        arr[0]=temp;
        }
        for(int i=0;i<q;i++){
            System.out.println(arr[qrr[i]]);
        }
    }
    catch(Exception ae){
        System.out.println(ae.getMessage());
    }
}
}

0 个答案:

没有答案