LeetCode in Kotlin

766. Toeplitz Matrix

Easy

Given an m x n matrix, return true if the matrix is Toeplitz. Otherwise, return false.

A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same elements.

Example 1:

Input: matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]

Output: true

Explanation: In the above grid, the diagonals are: “[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”. 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.

Constraints:

Follow up:

Solution

class Solution {
    fun isToeplitzMatrix(matrix: Array<IntArray>): Boolean {
        val m = matrix.size
        val n = matrix[0].size
        var i = 0
        var j = 0
        var sameVal = matrix[i][j]
        while (++i < m && ++j < n) {
            if (matrix[i][j] != sameVal) {
                return false
            }
        }
        i = 1
        j = 0
        while (i < m) {
            var tmpI = i
            var tmpJ = j
            sameVal = matrix[i][j]
            while (++tmpI < m && ++tmpJ < n) {
                if (matrix[tmpI][tmpJ] != sameVal) {
                    return false
                }
            }
            i++
        }
        i = 0
        j = 1
        while (j < n) {
            var tmpJ = j
            var tmpI = i
            sameVal = matrix[tmpI][tmpJ]
            while (++tmpI < m && ++tmpJ < n) {
                if (matrix[tmpI][tmpJ] != sameVal) {
                    return false
                }
            }
            j++
        }
        return true
    }
}