【Pregunta diaria de LeetCode】—— 766. Matriz de Toeplitz

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:

    • inserte la descripción de la imagen aquí
    • 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:

    • inserte la descripción de la imagen aquí
    • 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 ( mn ) ,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]

  1. 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;
    }
}
  1. 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;
}
  1. 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
  1. 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]

  1. Versión del lenguaje Java
    inserte la descripción de la imagen aquí

  2. Versión en lenguaje C
    inserte la descripción de la imagen aquí

  3. Versión en lenguaje Python
    inserte la descripción de la imagen aquí

  4. Versión del lenguaje C++
    inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/IronmanJay/article/details/132015674
Recomendado
Clasificación