Description
牛客网 2018校招真题 Kolakoski 序列
Solving Ideas
p为给定数组的下标
q为生成序列的下标
Solution
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
/**
* @author wylu
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strs = br.readLine().split(" ");
int n = Integer.parseInt(strs[0]), m = Integer.parseInt(strs[1]);
strs = br.readLine().split(" ");
int[] arr = new int[strs.length];
for (int i = 0; i < strs.length; i++) {
arr[i] = Integer.parseInt(strs[i]);
}
for (Integer e : genKolakoski(arr, n, m)) {
System.out.println(e);
}
}
private static ArrayList<Integer> genKolakoski(int[] a, int n, int m) {
ArrayList<Integer> res = new ArrayList<>();
for (int p = 0, q = 0; n > 0; p++, q++) {
if (p == m) p = 0;
res.add(a[p]);
n--;
for (int i = 0; i < res.get(q) - 1 && n > 0; i++) {
res.add(a[p]);
n--;
}
}
return res;
}
}