Título
Darle una matriz de mxn. Si esta matriz es una matriz de Toplitz, devuelve verdadero; de lo contrario, devuelve falso.
Si los elementos de cada diagonal desde la parte superior izquierda a la inferior derecha de la matriz son iguales, entonces la matriz es una matriz de Toplitz.
Ejemplo 1:
Entrada: matriz = [[1,2,3,4], [5,1,2,3], [9,5,1,2]]
Salida: verdadera
Explicación:
En la matriz anterior, su diagonal es:
" [9] "," [5, 5] "," [1, 1, 1] "," [2, 2, 2] "," [3, 3] "," [4] ".
Todos los elementos de cada diagonal son iguales, por lo que la respuesta es Verdadero.
Ejemplo 2:
Entrada: matriz = [[1,2], [2,2]]
Salida: falso
Explicación:
Los elementos de la diagonal "[1, 2]" son diferentes.
inmediato:
m == matriz.longitud
n == matriz [i] .longitud
1 <= m, n <= 20
0 <= matriz [i] [j] <= 99
Ideas para resolver problemas
Aquí dividimos la pregunta en dos partes de acuerdo con el significado de la pregunta, una es el triángulo inferior (dividido por 45 ° de cada fila hacia la parte inferior derecha), la
segunda parte y el triángulo superior (cada columna está dividida por 45 ° hacia la parte inferior derecha, excluyendo la primera columna)
Estas dos partes del juicio son básicamente las mismas. Tome el siguiente triángulo como ejemplo
. El juicio de coordenadas de la matriz, la esquina inferior derecha se compara con la esquina superior izquierda, es decir , la abscisa más uno, la ordenada más un
punto en la fila actual y el punto en cada fila subsiguiente si hay una diferencia, luego devuelve directamente falso
si es el mismo, a la siguiente línea, repitiendo el paso anterior.
Demostración de código
class Solution {
public boolean isToeplitzMatrix(int[][] matrix) {
int m=matrix.length;
int n=matrix[0].length;
for(int i=0;i<m;i++)
{
int han=i+1;
int lie=1;
while (han<m&&lie<n)
{
if(matrix[han][lie]!=matrix[han-1][lie-1])
return false;
han++;
lie++;
}
}
for(int i=1;i<n;i++)
{
int lie=i+1;
int han=1;
while (han<m&&lie<n)
{
if(matrix[han][lie]!=matrix[han-1][lie-1])
return false;
han++;
lie++;
}
}
return true;
}
}
efecto
La
respuesta de información fue exitosa:
tiempo de ejecución: 1 ms, derrotando al 100,00% de los usuarios de Java
Consumo de memoria: 38,8 MB, derrotando al 11,67% de los usuarios de Java