牛客網 2018校招真題 搜狐 Kolakoski序列

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章