LeetCode 766. Toeplitz Matrix [Easy]

托普利兹矩阵。

题目来源:https://leetcode.com/problems/toeplitz-matrix

题目难度:Easy

解答1[Java]:

核心思想

使用 (r, c) 表示行号和列号,r-c 相同的元素是在同一条对角线上的,可以看作同一组。使用一个 HashMap 存储每个组的值,然后依次遍历元素,根据 r-c 算出来他所在的组,然后判断其值和其所在组的值是否一致。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public boolean isToeplitzMatrix(int[][] matrix) {
HashMap<Integer, Integer> groups = new HashMap<>();
for (int r = 0; r < matrix.length; ++r) {
for (int c = 0; c < matrix[0].length; ++c) {
if (!groups.containsKey(r - c))
groups.put(r - c, matrix[r][c]);
else if (groups.get(r - c) != matrix[r][c])
return false;
}
}
return true;
}
}

解答2[Java]:

核心思想

依次遍历元素,然后判断其值和其坐上方元素的值是都一样,如果不一样,就返回 false,如果遍历顺利完成,返回 true。判断其左上方元素的时候要确保 r > 0c > 0 以保证数组不会越界。

代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public boolean isToeplitzMatrix(int[][] matrix) {
for (int r = 0; r < matrix.length; ++r) {
for (int c = 0; c < matrix[0].length; ++c) {
if (r > 0 && c > 0 && matrix[r - 1][c - 1] != matrix[r][c]) {
return false;
}
}
}
return true;
}
}