766. 托普利茨矩阵『简单』

题目来源于力扣(LeetCode

一、题目

766. 托普利茨矩阵

题目相关标签:数组

说明:

  • matrix 是一个包含整数的二维数组。
  • matrix 的行数和列数均在 [1, 20]范围内。
  • matrix[i][j] 包含的整数在 [0, 99]范围内。

二、解题思路

  1. 判断由左上到右下的对角线上是否具有相同元素:当前遍历的元素如果行的索引大于 0 且列的索引也大于 0时,则其对角线上的元素索引为 [行索引 - 1][列索引 - 1]

三、代码实现

public static boolean isToeplitzMatrix(int[][] matrix) {
    // 矩阵中仅 1 行或 1 列 时,没有对角线
    if (matrix.length <= 1 || matrix[0].length <= 1) {
        return true;
    }
    // 记录前一行的一组数组,初始值为矩阵第 1 行
    int[] arr = matrix[0];
    // 遍历矩阵,从第 2 行开始
    for (int i = 1; i < matrix.length; i++) {
        // 遍历矩阵中的某一行,从第 2 列开始
        for (int j = 1; j < matrix[i].length; j++) {
            // 对角线:判断当前遍历元素是否等于上一行的前一个元素
            if (matrix[i][j] != arr[j - 1]) {
                return false;
            }
        }
        // 当前行记录为上一行
        arr = matrix[i];
    }
    return true;
}

四、执行用时

五、部分测试用例

public static void main(String[] args) {
    int[][] matrix = {{1, 2, 3, 4},
                      {5, 1, 2, 3},
                      {9, 5, 1, 2}};  // output:true

//    int[][] matrix = {{1, 2},
//                      {2, 2}};  // output:false
    
    boolean result = isToeplitzMatrix(matrix);
    System.out.println(result);
}
posted @ 2020-05-26 22:34  知音12138  阅读(180)  评论(0编辑  收藏  举报