解题思路
因为示例中第二个数组数字重复的次数为第一个序列的数字,因次可以定义两个指针,一个用于标示给定的数组的角标,一个用于标示第一个数组当前序列的位置,通过第一个数组的当前指针指向的数字作为个数,给定数组指针指向的值作为值,生成数组的下一个值,然后分别移动两个指针。
import java.util.Scanner;
public class Main {
private static void fun(int[] data, int n) {
int index = 0;
int indexSequence = 0;
int count = 0;
int[] num = new int[n];
while (count < n) {
num[count++] = data[index];
int c = 1;
while (count < n && c < num[indexSequence]) {
num[count] = num[count - 1];
c++;
count++;
}
indexSequence++;
index++;
if (index == data.length)
index = 0;
}
for (int d : num)
System.out.println(d);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] data = new int[m];
for (int i = 0; i < m; i++) {
data[i] = sc.nextInt();
}
fun(data, n);
}
}