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;
        }
    }
  • 相关阅读:
    唐-诗:《旅夜书怀》
    唐-诗:《蜀相》
    唐-诗:《绝句四首》
    唐-诗:《望庐山瀑布》
    唐-诗-七言绝句:《黄鹤楼送孟浩然之广陵》
    汉-诗歌:《大风歌》
    makefile中的一点知识
    我们该不该“越级汇报”
    SDUT--找朋友(BFS&amp;&amp;DFS)
    智能社区--HI3516C可视门禁研发出来咯
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/9034309.html
Copyright © 2011-2022 走看看