我有一个正在运行的代码,它正确地执行了正确的输出,但是给出了#34; Time Exceeded"某些输入案例的错误。这是在线编码论坛的一个实践问题。我用java编码并使用BufferedReader
而不是Scanner
,因为它更快。但是,我无法执行它。问题是向右执行数组旋转k次。此外,n
和k
的值应按空格分隔。数组输入也应该是空格分隔的。
k->轮换次数
t->测试用例数
n->数组的大小
以下是我的代码。我应该做出哪些改变,以便它适用于大输入。我可以用C ++编写代码,但我想知道这段代码的问题。
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
public class Samp {
public static void main(String[] args)throws IOException {
try {
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
int a[], b[], c[];
int n, k;
byte t;
t = Byte.parseByte(br.readLine());
while (t != 0) {
String s = br.readLine();
String ss[] = s.split(" ");
n = Integer.parseInt(ss[0]);
k = Integer.parseInt(ss[1]);
a = new int[n];
b = new int[n];
String st = br.readLine();
String stt[] = st.split(" ");
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(stt[i]);
}
while (k != 0) {
solve(a, k);
k--;
}
for (int i = 0; i < n; i++)
System.out.print(a[i] + " ");
System.out.println();
t--;
}
} catch (IOException e) {
e.printStackTrace();
}
}
static void solve(int[] a, int k) {
for (int i = a.length - 1; i > 0; i--) {
int t = a[i];
a[i] = a[i - 1];
a[i - 1] = t;
}
}