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

如何检测二维数组中两个元素是否为上下左右四方向相邻

矩阵相邻元素校验实现方案

功能需求

  • 方法接收两个整型参数:起始值start、目标值destination
  • 第一步校验起始值是否存在于固定矩阵中
  • 第二步校验目标值是否在起始值的上下左右四个相邻方向范围内
  • 矩阵无重复数字、结构固定不变

示例说明

  • 示例1:示例1
    起始值为6、目标值为7时,二者相邻,校验判定为真
  • 示例2:示例2
    起始值为4、目标值为2时,二者不相邻,校验判定为假

固定矩阵初始化代码

int[][] matrix = {{0,1,2,}, 
                  {3,4,5,}, 
                  {6,7,8}};

实现思路

当遍历找到起始值对应的坐标(row, col)后,上下左右四个相邻位置的坐标可以通过偏移量计算得到:

  • 上:(row-1, col)
  • 下:(row+1, col)
  • 左:(row, col-1)
  • 右:(row, col+1)
    需要先校验计算得到的新坐标是否在矩阵合法范围内,再比对该位置的值是否等于目标值即可。

完整实现代码

// 矩阵作为类静态成员,适配静态方法调用
private static int[][] matrix = {{0,1,2,}, 
                                 {3,4,5,}, 
                                 {6,7,8}};

public static double check(int start, int destination) {
    // 预定义四个方向的坐标偏移量,简化重复判断逻辑
    int[][] offsets = {{-1,0}, {1,0}, {0,-1}, {0,1}};
    int rowCount = matrix.length;
    int colCount = matrix[0].length;

    for(int row = 0; row < rowCount; row++) {
        for(int col = 0; col < colCount; col++) {
            // 匹配到起始值坐标
            if(matrix[row][col] == start) {
                // 遍历四个相邻方向校验
                for(int[] offset : offsets) {
                    int newRow = row + offset[0];
                    int newCol = col + offset[1];
                    // 先校验坐标合法性,避免数组下标越界
                    if(newRow >= 0 && newRow < rowCount && newCol >=0 && newCol < colCount) {
                        if(matrix[newRow][newCol] == destination) {
                            // 校验通过,此处可替换为你的业务逻辑,示例返回1.0代表相邻
                            return 1.0;
                        }
                    }
                }
                // 四个方向均未匹配到目标值,示例返回0.0代表不相邻
                return 0.0;
            }
        }
    }
    // 遍历完成未找到起始值,示例返回-1.0代表起始值不存在
    return -1.0;
}

内容的提问来源于stack exchange,提问作者Gentian Gashi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:15:03