題目描述
個人覺得自己的想法很機(jī)智帖努,首先使用 2N 長度的數(shù)組存儲了數(shù)據(jù)皂吮,開始輸入數(shù)據(jù)時存儲位置為 N-2N-1划乖,所以后續(xù)在做右移的時候只需將最后一位的數(shù)據(jù)放到 N 前面的位置即可友瘤,剩下的依此類推。對了眯亦,記得考慮當(dāng)移位次數(shù)大于數(shù)據(jù)總數(shù)時特殊情況的考慮伤溉,取余即可。原始代碼如下:
import java.util.Scanner;
/**
* Created by huliang on 16/7/23.
*/
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int N = scanner.nextInt();
int K = scanner.nextInt();
int Q = scanner.nextInt();
// 獲取數(shù)組數(shù)據(jù)
int a[] = new int[2 * N];
for (int i = 0; i < N; i++) {
a[i] = '\0';
}
for (int i = N; i < 2 * N; i++) {
a[i] = scanner.nextInt();
}
// 進(jìn)行交換操作,注意當(dāng) K>N 時需進(jìn)行取余操作
for (int i = 1; i <= K%N; i++) {
a[N - i] = a[2 * N - i];
a[2 * N - i] = '\0';
}
// 輸出需要的值
for (int i = 0; i < Q; i++) {
System.out.println(a[N - K%N + scanner.nextInt()]);
}
}
}
}