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
相关产品推荐
相关产品推荐

