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

Java中如何用默认值-1初始化二维数组?DP记忆化场景替代嵌套循环

在Java中简洁初始化二维DP数组为-1的方法

对于DP问题里的记忆化矩阵初始化,不想写嵌套for循环的话,有几种简洁的实现方式:

  • 用Arrays.stream配合forEach
    先创建二维数组,再通过流遍历每一行,用Arrays.fill填充-1,一行代码搞定:

    int[][] dp = new int[10][10]; // 替换成你的行列数
    Arrays.stream(dp).forEach(row -> Arrays.fill(row, -1));
    
  • 创建数组时直接完成初始化
    如果需要动态指定行列数,可以用IntStream一次性完成数组创建和初始化:

    int rows = 8, cols = 8;
    int[][] dp = IntStream.range(0, rows)
                          .mapToObj(i -> new int[cols])
                          .peek(row -> Arrays.fill(row, -1))
                          .toArray(int[][]::new);
    

⚠️ 注意避坑:不要尝试用Arrays.fill(dp, new int[cols])来初始化,这会让二维数组的所有行都指向同一个一维数组对象,修改任意一行都会导致所有行同步变化,完全不符合DP记忆化的需求。

内容的提问来源于stack exchange,提问作者Rushil Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:12:33