如何判断矩阵是否为框架矩阵?Java函数实现求助
判断框架矩阵的Java函数实现
问题定义
框架矩阵是由多层嵌套框架构成的矩阵,需满足以下规则:
- 最外层框架的所有元素值相同(标记为A)
- 内层每一层框架的所有元素值也各自统一(标记为B、C等)
- 支持任意大小和多层嵌套结构
示例结构:

当前已实现外层框架的检查逻辑,需补充内层框架的验证逻辑以完成完整判断。
解决方案
采用递归方式逐层验证每一层框架,代码实现如下:
public static boolean isFrameMatrix(int[][] matrix) { // 处理空矩阵或无效矩阵 if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return false; } int rows = matrix.length; int cols = matrix[0].length; // 1x1矩阵直接符合框架矩阵要求 if (rows == 1 && cols == 1) { return true; } int currentFrameVal = matrix[0][0]; // 检查首行和末行的所有元素 for (int j = 0; j < cols; j++) { if (matrix[0][j] != currentFrameVal || matrix[rows - 1][j] != currentFrameVal) { return false; } } // 检查首列和末列的中间元素(跳过首尾行已检查的元素) for (int i = 1; i < rows - 1; i++) { if (matrix[i][0] != currentFrameVal || matrix[i][cols - 1] != currentFrameVal) { return false; } } // 若存在内层矩阵,递归验证 if (rows > 2 && cols > 2) { int[][] innerMatrix = new int[rows - 2][cols - 2]; for (int i = 1; i < rows - 1; i++) { System.arraycopy(matrix[i], 1, innerMatrix[i - 1], 0, cols - 2); } return isFrameMatrix(innerMatrix); } // 无内层矩阵,当前层验证通过 return true; }
逻辑说明
- 边界处理:先过滤空矩阵、单行/单列无效矩阵,1x1矩阵直接判定为符合要求
- 外层验证:遍历首行、末行所有元素,以及首列、末列的中间元素,确保当前层框架值统一
- 递归内层:当矩阵尺寸大于2x2时,提取去掉首尾行/列后的内层子矩阵,递归调用函数验证内层是否符合框架要求
- 终止条件:当无法拆分出内层矩阵时,说明所有外层均验证通过,返回true
内容的提问来源于stack exchange,提问作者Nuevo
相关产品推荐
相关产品推荐

