【Question quotidienne LeetCode】 —— 766. Matrice Toeplitz

Un [catégorie de sujet]

  • matrice

Deux [difficulté de la question]

  • Simple

Trois [numéro de sujet]

  • 766. Matrice Toeplitz

Quatre [description du titre]

  • On vous donne une matrice de matrice mxn. Renvoie true si cette matrice est une matrice Toeplitz ; sinon, renvoie false.
  • Une matrice est une matrice de Toeplitz si les éléments de chaque diagonale du haut à gauche au bas à droite sont les mêmes.

Cinq [exemples de sujet]

  • Exemple 1:

    • insérez la description de l'image ici
    • Entrée : matrice = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
    • Sortie : vrai
    • expliquer:
      • Dans la matrice ci-dessus, sa diagonale vaut :
      • "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"。
      • Tous les éléments sur les diagonales respectives sont les mêmes, donc la réponse est Vrai.
  • Exemple 2 :

    • insérez la description de l'image ici
    • Entrée : matrice = [[1,2],[2,2]]
    • sortie : faux
    • expliquer:
      • Les éléments sur la diagonale "[1, 2]" sont différents.

Six [invite de sujet]

  • m = = matrice . longueurm == matrice.longueurm==ma t r i x . longueur _ _ _ _ _
  • n = = matrice [ je ] . longueurn == matrice[i].longueurn==ma t r je x [ je ] . longueur _ _ _ _ _
  • 1 < = m, n < = 20 1 <= m, n <= 201<=moi ,n<=20
  • 0 < = matrice [ je ] [ j ] < = 99 0 <= matrice[i][j] <= 990<=ma t r je x [ je ] [ j ]<=99

Sept [sujet avancé]

  • Que se passe-t-il si la matrice est stockée sur disque et que la mémoire est limitée de sorte qu'au plus une ligne de la matrice peut être chargée en mémoire à la fois ?
  • Que se passe-t-il si la matrice est si grande que seule une ligne incomplète peut être chargée en mémoire à la fois ?

Huit [idées de résolution de problèmes]

  • L'idée de cette question est relativement simple. Nous n'avons pas besoin de comparer les diagonales une par une. Nous devons seulement comparer si les éléments restants, à l'exception du dernier élément de la ligne précédente et du premier élément de la ligne suivante, veulent attendez
  • Parce que s'il s'agit d'une matrice Toeplitz, la ligne suivante doit être la matrice formée en déplaçant la ligne précédente vers la droite, donc le dernier élément de la ligne précédente et le premier élément de la ligne suivante n'ont pas besoin d'être jugés, car le ligne précédente Le dernier élément est supprimé, et le premier élément de la ligne suivante devient la diagonale seule
  • Renvoie enfin le résultat

Neuf [fréquence temporelle]

  • Complexité temporelle : O ( m ∗ n ) O(m * n)O ( mn )m 、 nm 、 nm et n sont respectivement le nombre de lignes et de colonnes du tableau entrant
  • Complexité spatiale : O ( 1 ) O(1)O ( 1 )

Dix [implémentation du code]

  1. version du langage 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. version en langage 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. Version en langage 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. version du langage 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;
    }
};

Onze [résultats de la soumission]

  1. version du langage Java
    insérez la description de l'image ici

  2. version en langage C
    insérez la description de l'image ici

  3. Version en langage Python
    insérez la description de l'image ici

  4. version du langage C++
    insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/IronmanJay/article/details/132015674
conseillé
Classement