old_contents: # Time:  O(m * n)
  # Space: O(1)
  
  # A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element.
  # Now given an M x N matrix, return True if and only if the matrix is Toeplitz.
  #
  # Example 1:
  #
  # Input: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
  # Output: True
  # Explanation:
  # 1234
  # 5123
  # 9512
  #
  # In the above grid, the diagonals are
  # "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]",
  # and in each diagonal all elements are the same, so the answer is True.
  #
  # Example 2:
  #
  # Input: matrix = [[1,2],[2,2]]
  # Output: False
  # Explanation:
  # The diagonal "[1, 2]" has different elements.
  #
  # Note:
  # - matrix will be a 2D array of integers.
  # - matrix will have a number of rows and columns in range [1, 20].
  # - matrix[i][j] will be integers in range [0, 99].
  
  class Solution(object):
      def isToeplitzMatrix(self, matrix):
          """
          :type matrix: List[List[int]]
          :rtype: bool
          """
          return all(i == 0 or j == 0 or matrix[i-1][j-1] == val
                     for i, row in enumerate(matrix)
                     for j, val in enumerate(row))
  
new_contents: # Time:  O(m * n)
  # Space: O(1)
  
  # A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element.
  # Now given an M x N matrix, return True if and only if the matrix is Toeplitz.
  #
  # Example 1:
  #
  # Input: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]
  # Output: True
  # Explanation:
  # 1234
  # 5123
  # 9512
  #
  # In the above grid, the diagonals are
  # "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]",
  # and in each diagonal all elements are the same, so the answer is True.
  #
  # Example 2:
  #
  # Input: matrix = [[1,2],[2,2]]
  # Output: False
  # Explanation:
  # The diagonal "[1, 2]" has different elements.
  #
  # Note:
  # - matrix will be a 2D array of integers.
  # - matrix will have a number of rows and columns in range [1, 20].
  # - matrix[i][j] will be integers in range [0, 99].
  
  class Solution(object):
      def isToeplitzMatrix(self, matrix):
          """
          :type matrix: List[List[int]]
          :rtype: bool
          """
          return all(i == 0 or j == 0 or matrix[i-1][j-1] == val
                     for i, row in enumerate(matrix)
                     for j, val in enumerate(row))
  
  
  class Solution2(object):
      def isToeplitzMatrix(self, matrix):
          """
          :type matrix: List[List[int]]
          :rtype: bool
          """
          for row_index, row in enumerate(matrix):
              for digit_index, digit in enumerate(row):
                  if not row_index or not digit_index:
                      continue
                  if matrix[row_index - 1][digit_index - 1] != digit:
                      return False
          return True
  
subject: Add a bit more readable solution for 'Toeplitz matrix' problem