766. 托普利茨矩阵『简单』
题目来源于力扣(LeetCode)
一、题目
题目相关标签:数组
说明:
- matrix 是一个包含整数的二维数组。
- matrix 的行数和列数均在 [1, 20]范围内。
- matrix[i][j] 包含的整数在 [0, 99]范围内。
二、解题思路
- 判断由左上到右下的对角线上是否具有相同元素:当前遍历的元素如果行的索引大于 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);
}