zoukankan      html  css  js  c++  java
  • LeetCode算法题-Toeplitz Matrix(Java实现)

    这是悦乐书的第312次更新,第333篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第181题(顺位题号是766)。如果从左上角到右下角的每个对角线具有相同的元素,则矩阵是Toeplitz。现在给定一个M×N矩阵,当且仅当矩阵是Toeplitz时返回True。例如:

    输入:矩阵= [[1,2,3,4],[5,1,2,3],[9,5,1,2]]

    输出:true

    说明:在上面的网格中,对角线是:“[9]”,“[5,5]”,“[1,1,1]”,“[2,2,2]”,“[3,3]”,“[4]”。在每个对角线中,所有元素都是相同的,因此答案是true。


    输入:矩阵= [[1,2],[2,2]]

    输出:错误

    说明:对角线“[1,2]”具有不同的元素。


    注意:

    • 矩阵将是一个整数的二维数组。

    • 矩阵将具有范围[1,20]中的多个行和列。

    • matrix [i] [j]将是范围[0,99]中的整数。

    跟进:

    1、如果矩阵存储在磁盘上,并且内存有限,以至于你一次只能将矩阵的最多一行加载到内存中,该怎么办?

    2、如果矩阵太大而你只能一次将部分行加载到内存中怎么办?

    本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

    02 解题

    题目的要求是判断对角线上的值是否都相同,所以我们直接遍历数组,获取当前元素,判断它的右下元素(行和列都加1)是否与其相等,当然也可以判断左上方向,不等于就直接返回false。

    另外,题目后面跟了两个问题,针对第一个问题可以使用HashMap或者队列的方式,存一次判断一次;针对第二个问题,根据每次能加载最大行数,将其分解。

    public boolean isToeplitzMatrix(int[][] matrix) {
        int r = matrix.length;
        int c = matrix[0].length;
        for (int i=0; i<r; i++) {
            for (int j=0; j<c; j++) {
                if (i+1<r && j+1<c && matrix[i+1][j+1] != matrix[i][j]) {
                    return false;
                }
            }
        }
        return true;
    }
    

    03 小结

    算法专题目前已日更超过五个月,算法题文章181+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

    以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    两个list,并集、交集、差集
    关于apt-get install
    异步进程池
    获取cpu信息
    print重定向
    使用pandas操作excel
    排列组合,取所有可能性
    list_反转,切片,删除,升序降序
    抠图
    enumerate()函数的用法
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/10747132.html
Copyright © 2011-2022 走看看