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

Java中事先不确定数组长度如何处理?数独场景实现示例

未知数组长度时的Java实现方案

适配你当前知识储备的优化方案

你当前的两次遍历写法本身逻辑清晰,对于固定9*9大小的数独场景来说,性能完全达标,可以正常使用。如果想要改成单次遍历实现,利用数独棋盘最多81个位置的特性,可以先创建最大容量的临时数组存储坐标,遍历结束后截取有效部分即可:

int[][] mutable()
{
    // 数独棋盘最大容量为81,提前创建临时数组
    int[][] temp = new int[81][2];
    int count = 0;
    for (int i = 0; i < board.length; i++) {
        for (int j = 0; j < board[i].length; j++) {
            if (board[i][j] == 0) {
                temp[count][0] = i;
                temp[count][1] = j;
                count++;
            }
        }
    }
    // 手动拷贝有效部分生成结果数组
    int[][] mutable = new int[count][2];
    for (int k = 0; k < count; k++) {
        mutable[k] = temp[k];
    }
    return mutable;
}

通用场景解决方案

等你后续学习到Java集合框架后,处理未知长度的元素序列可以直接使用ArrayList这类动态集合,无需提前预估容量,集合会自动实现扩容,代码更简洁:

import java.util.ArrayList;
import java.util.List;

int[][] mutable()
{
    List<int[]> zeroPositions = new ArrayList<>();
    for (int i = 0; i < board.length; i++) {
        for (int j = 0; j < board[i].length; j++) {
            if (board[i][j] == 0) {
                zeroPositions.add(new int[]{i, j});
            }
        }
    }
    // 集合转换为数组返回
    return zeroPositions.toArray(new int[0][]);
}

内容的提问来源于stack exchange,提问作者Nothing special

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:24:04