トピック
テキスト
mxnの行列を与えます。この行列がテプリッツ行列の場合はtrueを返し、そうでない場合はfalseを返します。
行列の左上から右下までの各対角線上の要素が同じである場合、この行列はテプリッツ行列です。
例1:
入力:行列= [[1,2,3,4]、[5,1,2,3]、[9,5,1,2]]
出力:true
説明:
上記の行列では、その対角線は:
" [9] "、" [5、5] "、" [1、1、1] "、" [2、2、2] "、" [3、3] "、" [4] "。
各対角線上のすべての要素は同じであるため、答えはTrueです。
例2:
入力:行列= [[1,2]、[2,2]]
出力:false
説明:
対角線「[1、2]」の要素が異なります。
促す:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 20
0 <= matrix[i][j] <= 99
上級:
如果矩阵存储在磁盘上,并且内存有限,以至于一次最多只能将矩阵的一行加载到内存中,该怎么办?
如果矩阵太大,以至于一次只能将不完整的一行加载到内存中,该怎么办?
ソース:LeetCode
テンプレート
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize){
}
問題解決
分析
この質問では、結果の2桁の配列の左上から右下への対角線上の数値が等しいかどうかを判断する必要があります。
各要素とその右下隅の要素が等しいかどうかとして理解できます。
簡単な質問は少なく、公式の考え方もこんな感じです。
完全なソースコード
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize) {
int m = matrixSize, n = matrixColSize[0];
for (int i = 1; i < m; i++) {
for (int j = 1; j < n; j++) {
if (matrix[i][j] != matrix[i - 1][j - 1]) {
return false;
}
}
}
return true;
}