我正在尝试在HackerRank中解决这个problem,但在某些测试用例中我得到了超时错误。有什么建议? 以下是我的代码; 大多数测试用例都有效,但其他测试用例超时。
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]]);
}
}
}
答案 0 :(得分:0)
可能就地旋转阵列而不是为每次旋转创建一个新阵列?
FROM ruby:2.3.1
RUN gem install rails && \
apt-get update -y && \
apt-get install -y nodejs
VOLUME ["/web_app"]
ADD . /web_app
WORKDIR /web_app
RUN bundle install
CMD rails s -b 0.0.0.0 -p 80
EXPOSE 80
然后是:
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);
您还可以针对 k 小于 n 的情况进行优化,但如果您需要,我会将其留作练习。