算法刷题打卡第76天:判断矩阵是否是一个 X 矩阵

news2024/9/24 7:21:49

判断矩阵是否是一个 X 矩阵

难度:简单

如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵

矩阵对角线上的所有元素都 不是 0
矩阵中所有其他元素都是 0
给你一个大小为 n x n 的二维整数数组 grid ,表示一个正方形矩阵。如果 grid 是一个 X 矩阵 ,返回 true ;否则,返回 false

示例 1:

请添加图片描述

输入:grid = [[2,0,0,1],[0,3,1,0],[0,5,2,0],[4,0,0,2]]
输出:true
解释:矩阵如上图所示。
X 矩阵应该满足:绿色元素(对角线上)都不是 0 ,红色元素都是 0 。
因此,grid 是一个 X 矩阵。

示例 2:

请添加图片描述

输入:grid = [[5,7,0],[0,3,1],[0,5,0]]
输出:false
解释:矩阵如上图所示。
X 矩阵应该满足:绿色元素(对角线上)都不是 0 ,红色元素都是 0 。
因此,grid 不是一个 X 矩阵。

模拟

思路:

首先题目给出 X \text{X} X 矩阵的定义,一个正方形矩阵如果同时满足以下两个条件则该矩阵为 X \text{X} X 矩阵。

  • 矩阵对角线上的所有元素都不是 0 0 0
  • 矩阵中的所有其他元素都是 0 0 0

现在给出一个大小为 n × n n \times n n×n 的二维整数数组 grid \textit{grid} grid,现在我们需要判断 grid \textit{grid} grid 是否是一个 X \text{X} X 矩阵。对于矩阵 grid \textit{grid} grid 中的某一个位置 ( i , j ) (i, j) (i,j) 0 ≤ i , j < n 0 \le i, j < n 0i,j<n,如果满足 i = j i = j i=j 或者 i + j + 1 = n i + j + 1= n i+j+1=n,则说明该点在矩阵 grid \textit{grid} grid 的对角线上,否则不在矩阵对角线上。那么我们遍历矩阵中的每一个位置来判断是否满足 X X X 的定义即可——若在对角线上则需要满足 grid [ i ] [ j ] ≠ 0 \textit{grid}[i][j] \ne 0 grid[i][j]=0,否则需要满足 grid [ i ] [ j ] = 0 \textit{grid}[i][j] = 0 grid[i][j]=0。如果每一个位置都满足要求则返回 true \text{true} true,否则返回 false \text{false} false

复杂度分析:

  • 时间复杂度: O ( n 2 ) O(n^2) O(n2),其中 n n n 为正方形矩阵 grid \textit{grid} grid 的行列数。
  • 空间复杂度: O ( 1 ) O(1) O(1)。仅使用常量空间。
class Solution:
    def checkXMatrix(self, grid: List[List[int]]) -> bool:
        length = len(grid)
        for i in range(length):
            for j in range(length):
                if j == i or j == length - 1 - i:
                    if grid[i][j] == 0:
                        return False
                elif grid[i][j]:
                    return False
        return True

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-matrix-is-x-matrix

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CV——day72:从零开始学YOLO——YOLO-v3(可以在我的资源里下载完整的v1到v3的笔记啦!)

YOLO-v36. YOLO-v36.1 YOLO-v3 改进综述6.2 多scale方法改进与特征融合6.3 经典变换方法对比分析6.4 残差连接方法解读6.5 整体网络模型架构分析6.6 先验框设计改进6.7 softmax层改进6. YOLO-v3 **tips&#xff1a;**作者本人因为美军广泛运用于军事领域&#xff0c;所以决定不…

基于php电影点播平台/电影网站

摘要网络技术给生活带来了十分的便利。所以把电影点播平台与现在网络相结合。在点播平台发展的整个过程中&#xff0c;电影信息管理担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类电影信息管理程序也在不断改进。本课题所设计的电影点播平台&#xff0c;使…

张艺谋《满江红》起诉自媒体人,杨语莲推荐周兆成意在下个谋女郎

伴随着兔年春节的到来&#xff0c;又迎来一波贺岁剧热潮&#xff0c;著名导演张艺谋的《满江红》&#xff0c;也如期和观众朋友见面。随着春节的逐渐结束&#xff0c;贺岁电影《满江红》票房&#xff0c;也再次创下了新高&#xff0c;关于这部电影的话题也多了起来。 最引人关注…

中国电子学会2021年12月份青少年软件编程Python等级考试试卷一级真题(含答案)

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;一级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1. 昨天的温度是5摄氏度&#xff0c;今天降温7摄氏度&#xff0c;今天的温度是多少摄氏度&#xff1f;&#xff08; &#xff09; A. 12 …

利用ChatGPT自动编写下载高德地图poi数据的代码

最近ChatGPT很火&#xff0c;它自己对于自己的解释如下图。我们可以让它来帮我们写代码&#xff0c;属于是薅机器人羊毛了。 首先注册账号&#xff0c;可百度&#xff0c;如&#xff1a;【教程】ChatGPT 保姆级注册教程&#xff0c;但中国大陆手机号不支持OpenAI的注册服务&am…

进程概念(PCB、进程创建、进程状态等)

进程是一个运行的程序&#xff0c;是所有计算机的基础。这个过程与计算机代码不一样&#xff0c;尽管它们非常相似。程序通常被认为是 “被动的” 实体&#xff0c;而进程则是 “主动的” 实体。硬件状态、RAM、CPU和其它属性都是进程持有的属性。下面我们就来了解更多关于进程…

活体识别1:近红外(NIR)图像特性

说明 最近在接触活体识别&#xff0c;在网上找到一个介绍近红外光&#xff08;NIR&#xff09;特性的论文&#xff0c;我简单做个笔记。原文的全文在文末参考资料里。 来自&#xff1a;[1]隋孟君,茅耀斌,孙金生.基于近红外图像特征的活体人脸检测[J].自动化与仪器仪表,2021(0…

Win10下使用WSL2

打包 wsl --export Ubuntu-20.04 E:\Ubuntu\ubuntu.tar.gz 注销之前 wsl --unregister Ubuntu-20.04 导入 wsl --import Ubuntu-20.04 E:\Ubuntu\ E:\Ubuntu\ubuntu.tar.gz --version 2 设置默认登陆用户为安装时用户名 ubuntu2004.exe config --default-user dwb 更新清…

vue 预览 word

最近做的项目要求实现预览word, pdf&#xff0c;png等文件功能&#xff0c;pdf以及png都很简单&#xff0c;轻松百度搞定&#xff0c;但是word预览研究了好久&#xff0c;所以特此记录分享。前端实现预览word分为两种&#xff0c;一种是上传前预览&#xff08;也就是前端使用in…

SpringBoot笔记:统一请求参数修改(HttpServletRequest流复制),加解密参数也可参考处理

文章目录需求实现思路实战演练实现过滤器Filter继承 HttpServletRequestWrapper实现 RequestBodyAdvice 统一处理请求参数测试代码测试效果需求 需要进行统一的解密请求 header 头里面的关键字 encryKey &#xff0c;将解密出来的值赋给 provinceId 并传递给后端的每一个请求接…

23年 yolov5车辆识别+行人识别+车牌识别+车速检测代码(python)

行人识别yolov5和v7对比yolo车距yolo车距1代码&#xff1a;yolov5车辆检测代码 已有1503人下载 代码无需更改&#xff0c;直接可以预测&#xff01;&#xff01;&#xff01; 流程&#xff1a; 版本与配置声明 # YOLOv5 requirements # Usage: pip install -r requirements.tx…

C语言--结构体初阶

目录前言结构体类型的声明什么是结构结构的声明结构体变量的定义结构成员的类型结构体变量的初始化结构体的成员访问结构体传参函数调用的参数压栈前言 在前面的C语言学习中&#xff0c;我们学习了形如char&#xff0c;short&#xff0c;int&#xff0c;float等的不同类型的变…

活动星投票臻我风采评选视频投票的功能在线投票程序

“臻我风采评选”网络评选投票_线上小程序的投票方式_视频投票的功能_在线投票程序用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票服务…

即时通讯开发之详解TCP/IP中的IP选路、动态选路

静态 IP 选路 1一个简单的路由表 选路是 IP 层最重要的一个功能之一。前面的部分已经简单的讲过路由器是通过何种规则来根据 IP 数据包的 IP 地址来选择路由。 这里就不重复了。 对于一个给定的路由器,可以打印出五种不同的 flag&#xff1a;  U 表明该路由可用。  G…

Qlik Sense Enterprise Windows版(非集群)——详细安装步骤

Qlik Sense分为客户端(Desktop)和服务器(Server)&#xff0c;本文主要介绍Qlik Sense Server的图形化界面安装操作。 安装方式也分为两种&#xff0c;一种是图形化界面安装&#xff0c;另一种是静默安装。一般只有在特殊报错情况下我们才使用静默安装&#xff0c;静默安装的方…

实现分页查询

实现分页查询一、分页要素与语法二、例&#xff1a;博客系统文章列表页2.1 原始前端代码2.2 实现&#xff1a;查询分页数据验证2.3 实现 “首页” “上一页” “下一页” “末页”前端代码添加得到总页数实现 四个点击效果验证一、分页要素与语法 分页要素&#xff1a; 1&…

Qt音视频开发13-视频解码线程基类的设计

一、前言 这个解码线程基类的设计&#xff0c;是到目前为止个人觉得自己设计的最好的基类之一&#xff0c;当然也不是一开始就知道这样设计&#xff0c;没有个三五年的摸爬滚打以及社会的毒打&#xff0c;是想不到要这样设计的&#xff0c;一方面是要不断提炼各种视频类视频组…

伪逆矩阵 的使用

伪逆矩阵&#xff08;pseudo-inverse&#xff09;_Uglyduckling911的博客-CSDN博客_伪逆矩阵 一、什么是伪逆矩阵 若任意矩阵Am*n,B 为A的广义逆矩阵&#xff0c;若B满足下述条件&#xff08;Moore-penrose条件&#xff09;&#xff1a; &#xff08;1&#xff09;BAB B&am…

4.门面模式,组合模式,享元模式

门面模式 为了保证接口的可复用性&#xff08;或者叫通用性&#xff09;&#xff0c;我们需要将接口尽量设计得细粒度一点&#xff0c;职责单一一点。但是&#xff0c;如果接口的粒度过小&#xff0c;在接口的使用者开发一个业务功能时&#xff0c;就会导致需要调用 n 多细粒度…

【手把手】教你使用JMH和Disruptor - 多线程与高并发工具

JMH JMH全称是Java Microbenchmark Harness&#xff08;Java微基准测试&#xff09;&#xff0c;简单讲其实就是测一个方法的性能好坏。这个测试的框架是2013年发出来的&#xff0c;由JLT的开发人员开发&#xff0c;后来归到了OpenJDK下面&#xff0c;官网地址&#xff1a;htt…