此代码在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());
}
}
}