Directorio de artículos
- Una [categoría de tema]
- Dos [dificultad de la pregunta]
- Tres [número de tema]
- Cuatro [descripción del título]
- Cinco [ejemplo de tema]
- Seis [mensaje de tema]
- Siete [tema avanzado]
- Ocho [ideas para resolver problemas]
- Nueve [frecuencia de tiempo]
- Diez [implementación de código]
- Once [resultados del envío]
Una [categoría de tema]
- matriz
Dos [dificultad de la pregunta]
- Simple
Tres [número de tema]
- 766. Matriz Toeplitz
Cuatro [descripción del título]
- Se le da una matriz matriz mxn. Devuelve verdadero si esta matriz es una matriz de Toeplitz; en caso contrario, devuelve falso.
- Una matriz es una matriz de Toeplitz si los elementos en cada diagonal de arriba a la izquierda a abajo a la derecha son iguales.
Cinco [ejemplo de tema]
-
Ejemplo 1:
- Entrada: matriz = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
- Salida: verdadero
- explicar:
- En la matriz anterior, su diagonal es:
- “[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。
- Todos los elementos de las respectivas diagonales son iguales, por lo que la respuesta es verdadera.
-
Ejemplo 2:
- Entrada: matriz = [[1,2],[2,2]]
- salida: falso
- explicar:
- Los elementos de la diagonal "[1, 2]" son diferentes.
Seis [mensaje de tema]
- m = = matriz . longitudm == matriz.longitudmetro==matriz _ _ _ _ _ longitud _ _ _ _ _
- norte = = matriz [ yo ] . longitudn == matriz[i].longitudnorte==matriz [ yo ] . _ _ _ _ longitud _ _ _ _ _
- 1 < = metro , norte < = 20 1 <= metro, norte <= 201<=m ,norte<=20
- 0 < = matriz [ i ] [ j ] < = 99 0 <= matriz[i][j] <= 990<=matriz [ i ] [ j ] _ _ _ _<=99
Siete [tema avanzado]
- ¿Qué pasa si la matriz se almacena en el disco y la memoria está limitada de modo que como máximo se puede cargar una fila de la matriz en la memoria a la vez?
- ¿Qué pasa si la matriz es tan grande que solo se puede cargar una fila incompleta en la memoria a la vez?
Ocho [ideas para resolver problemas]
- La idea de esta pregunta es relativamente simple, no necesitamos comparar las diagonales una por una, solo necesitamos comparar si los elementos restantes excepto el último elemento en la línea anterior y el primer elemento en la línea siguiente quieren esperar
- Porque si es una matriz de Toeplitz, la siguiente fila debe ser la matriz formada al mover la fila anterior hacia la derecha, por lo que no es necesario juzgar el último elemento de la fila anterior y el primer elemento de la fila siguiente, porque el fila anterior Se elimina el último elemento, y el primer elemento de la siguiente fila se convierte en la diagonal sola
- Finalmente devuelve el resultado.
Nueve [frecuencia de tiempo]
- Complejidad del tiempo: O ( m ∗ n ) O(m * n)O ( m∗n ) ,m , nm , nm y n son el número de filas y columnas de la matriz entrante, respectivamente
- Complejidad del espacio: O ( 1 ) O(1)O ( 1 )
Diez [implementación de código]
- Versión del lenguaje Java
class Solution {
public boolean isToeplitzMatrix(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
for(int i = 0;i < m - 1;i++){
for(int j = 0;j < n - 1;j++){
if(matrix[i][j] != matrix[i+1][j+1]){
return false;
}
}
}
return true;
}
}
- Versión en lenguaje C
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize)
{
int m = matrixSize;
int n = matrixColSize[0];
for(int i = 0;i < m - 1;i++)
{
for(int j = 0;j < n - 1;j++)
{
if(matrix[i][j] != matrix[i+1][j+1])
{
return false;
}
}
}
return true;
}
- Versión en lenguaje Python
class Solution:
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
m = len(matrix)
n = len(matrix[0])
for i in range(m - 1):
for j in range(n - 1):
if matrix[i][j] != matrix[i+1][j+1]:
return False
return True
- Versión del lenguaje C++
class Solution {
public:
bool isToeplitzMatrix(vector<vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
for(int i = 0;i < m - 1;i++){
for(int j = 0;j < n - 1;j++){
if(matrix[i][j] != matrix[i+1][j+1]){
return false;
}
}
}
return true;
}
};
Once [resultados del envío]
-
Versión del lenguaje Java
-
Versión en lenguaje C
-
Versión en lenguaje Python
-
Versión del lenguaje C++