You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用另一数组的前k个元素重复填充至长度为n的数组?

实现用数组前k个元素重复填充生成指定长度数组的Java函数

我来帮你补全这个fill函数,实现用原数组的前k个元素循环重复,生成一个长度为n的新数组。先看完整的实现代码,再一步步解释关键点:

import java.util.Arrays;

class Repeat_block {
    public static void main(String[] args) {
        int k = 3;
        int n = 10;
        int arr[] = { 1, 2, 3, 5, 9, 12, -2, -1 };
        System.out.println(Arrays.toString(fill(arr, k, n)));
    }

    public static int[] fill(int[] arr, int k, int n) {
        // 边界条件:数组为空、k为0或n<=0时返回null
        if (arr == null || k == 0 || n <= 0) {
            return null;
        }
        // 处理k超过原数组长度的情况,避免数组越界
        k = Math.min(k, arr.length);
        int arr2[] = new int[n];
        
        // 循环填充目标数组
        for (int i = 0; i < n; i++) {
            // 取模运算实现前k个元素的循环复用
            arr2[i] = arr[i % k];
        }
        return arr2;
    }
}

代码关键点解释:

  • 边界条件优化:除了你原本判断的k == 0 || n <= 0,我补充了arr == null的判断(避免传入空数组导致后续报错);同时处理了k > arr.length的情况——如果k比原数组长度大,就取整个数组的元素来重复填充,防止出现数组越界异常。
  • 循环填充逻辑:利用i % k的取模运算,让索引在0到k-1之间循环切换,不管n是多大,都能持续复用原数组的前k个元素。比如当i=3时,3%3=0,就会取原数组的第0个元素,完美实现循环重复的效果。
  • 测试结果:用你给出的测试用例运行代码,会输出[1, 2, 3, 1, 2, 3, 1, 2, 3, 1],完全符合预期。

内容的提问来源于stack exchange,提问作者Ramakanta Bisipa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:31:07