zoukankan      html  css  js  c++  java
  • Toeplitz Matrix

    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:

    1. matrix will be a 2D array of integers.
    2. matrix will have a number of rows and columns in range [1, 20].
    3. matrix[i][j] will be integers in range [0, 99].

    Solution:

    1. 

    class Solution {
        public boolean isToeplitzMatrix(int[][] matrix) {
            if (matrix == null) {
                return true;
            }
            
            int rowSize = matrix.length, colSize = matrix[0].length;
            
            // identify the horizontal sequence 
            int i = 0;
            while (i < rowSize) {
                if (!isSame(matrix, i++, 0)) {
                    return false;
                }
            }
            
            // identify the vertical sequence
            int j = 0;
            while (j < colSize) {
                if (!isSame(matrix, 0, j++)) {
                    return false;
                }
            }
            
            return true;
        }
        
        private boolean isSame(int[][]matrix, int i, int j) {
            int rowSize = matrix.length, colSize = matrix[0].length;
            if (i >= rowSize || j >= colSize) {
                return true;
            }
            
            int benchMark = matrix[i++][j++];
            while (i < rowSize && j < colSize) {
                if (matrix[i++][j++] != benchMark) {
                    return false;
                }
            }
            
            return true;
        }
    }

    2. 

    class Solution {
        public boolean isToeplitzMatrix(int[][] matrix) {
            for (int i = 0; i < matrix.length - 1; i++) {
                for (int j = 0; j < matrix[0].length = 1; j++) {
                    if (matrix[i][j] != matrix[i + 1][j + 1]) {
                        return false;
                    }
                }
            }
            
            return true;
        }
    }
  • 相关阅读:
    【Java】RuleSource约束常用方法整理
    【Oracle】多次提交造成性能慢及处理方法
    【Oracle】ORA-28000: the account is locked-的解决办法
    【Eclipse】几个最重要的快捷键
    JavaScript 垃圾回收总结
    JavaScript 执行环境(作用域)总结
    JavaScript基本数据类型
    全局 Ajax 事件处理器
    require.js 模块化
    配置apache反向代理进行跨域
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/9034309.html
Copyright © 2011-2022 走看看