力扣随机一题 6/28 数组/矩阵

  • 📝个人主页🌹:誓则盟约
  • ⏩收录专栏⏪:IT 竞赛
  • 🤡往期回顾🤡:6/27 每日一题
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍ 

 

目录:

 

3195.包含所有1的最小矩形面积I【中等】

 题目描述:

题目分析:

代码实现:

总结:

“山外青山楼外楼,西湖歌舞几时休?”——《题临安邸》


3195.包含所有1的最小矩形面积I【中等

 题目描述:

给你一个二维 二进制 数组 grid。请你找出一个边在水平方向和竖直方向上、面积 最小 的矩形,并且满足 grid 中所有的 1 都在矩形的内部。

返回这个矩形可能的 最小 面积。

示例 1:

输入: grid = [[0,1,0],[1,0,1]]

输出: 6

解释:

这个最小矩形的高度为 2,宽度为 3,因此面积为 2 * 3 = 6 

示例 2:

输入: grid = [[0,0],[1,0]]

输出: 1

解释:

 

这个最小矩形的高度和宽度都是 1,因此面积为 1 * 1 = 1

提示:

  • 1 <= grid.length, grid[i].length <= 1000
  • grid[i][j] 是 0 或 1。
  • 输入保证 grid 中至少有一个 1 。

 

题目分析:

        求矩形面积,也就是在找最左边的1的列号firstCol,最右边的1列号lastCol,最上面1的行号firstRow,最下面1的行号lastRow。

        那么面积就是  (lastRow-firstRow+1)*(lastCol-firstCol+1)

        遍历矩阵,分别找第一列,最后一列,第一行,最后一行出现1的数据,然后计算求结果。

代码实现:

class Solution:def minimumArea(self, grid: List[List[int]]) -> int:rowNums = len(grid)colNums = len(grid[0])firstRow = -1firstCol = -1lastRow = -1lastCol = -1for row in range(rowNums):if firstRow==-1:for col in range(colNums):if grid[row][col]==1:if firstRow==-1:firstRow=rowbreakfor col in range(colNums):if firstCol==-1:for row in range(rowNums):if grid[row][col]==1:if firstCol==-1:firstCol=colbreakfor row in range(rowNums-1,-1,-1):if lastRow==-1:for col in range(colNums-1,-1,-1):if grid[row][col]==1:if lastRow==-1:lastRow=rowbreakfor col in range(colNums-1,-1,-1):if lastCol==-1:for row in range(rowNums-1,-1,-1):if grid[row][col]==1:if lastCol==-1:lastCol=colbreakvalue = (lastRow-firstRow+1)*(lastCol-firstCol+1)return value


 

总结:

详解

  1. 首先,定义了网格的行数 rowNums 和列数 colNums 。
  2. 然后,通过四个循环分别找到值为 1 的单元格首次出现的行 firstRow 和列 firstCol ,以及最后出现的行 lastRow 和列 lastCol 。
    • 在第一个循环中,从第一行开始逐行查找,当找到第一个值为 1 的单元格时,记录其所在的行 firstRow ,并结束内层循环。
    • 第二个循环类似,从第一列开始逐列查找,记录第一个值为 1 的单元格所在的列 firstCol 。
    • 第三个循环从最后一行开始逐行向前查找,记录最后一个值为 1 的单元格所在的行 lastRow 。
    • 第四个循环从最后一列开始逐列向前查找,记录最后一个值为 1 的单元格所在的列 lastCol 。
  3. 最后,根据找到的边界计算最小矩形区域的面积 value ,公式为 (lastRow - firstRow + 1) * (lastCol - firstCol + 1) 。

考点

  1. 对二维数组的遍历和操作。
  2. 循环的使用和条件判断。
  3. 如何确定一个区域的边界。

收获

  1. 加深对二维数组操作的理解,包括如何遍历和根据特定条件获取相关信息。
  2. 学会通过多个循环和条件判断来确定一个区域的边界,并计算其相关属性(如面积)。
  3. 提高在解决实际问题时,对问题进行分析和转化为代码实现的能力。

“山外青山楼外楼,西湖歌舞几时休?”——《题临安邸》

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

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

相关文章

真实案例解析!企业如何做好安全生产管理工作?

很多企业都有相对应的安全管理制度&#xff0c;安全管理系统&#xff0c;安全管理人员等等&#xff0c;但这都仅限于企业“做了”安全生产管理&#xff0c;并不能“做好”安全生产管理。其实做好安全生产管理需要安全管理系统的配合。 听说过EHS系统吗&#xff1f;这系统能帮企…

百元平价蓝牙耳机哪款好?揭秘百元高性价比蓝牙耳机推荐

如今&#xff0c;市面上的耳机种类繁多&#xff0c;有线、无线、降噪等功能让人眼花缭乱。而对于那些预算有限、但又希望享受无线便捷和高性价比的朋友们来说&#xff0c;百元左右的蓝牙耳机无疑是一个不错的选择。这类耳机不仅能够提供不错的音质体验&#xff0c;同时价格也十…

安宝特分享 | 数字化革命,AR技术打造智慧城市的未来

随着城市化进程的加速和科技创新的不断推进&#xff0c; AR技术正逐步融入智慧城市建设的方方面面&#xff0c;为城市居民提供更智能、便捷、舒适的生活体验&#xff0c;开启了智慧城市的新时代。 01 优化城市规划与建设 AR技术在城市规划和建设中发挥着重要作用。城市规划师和…

可以在Mac电脑玩的拳皇97 for Mac(KOF97) 支持M1

《拳皇97》&#xff08;The King of Fighters 97&#xff09;是一款由SNK公司制作的拳击格斗游戏&#xff0c;于1997年在Arcade平台发布&#xff0c;随后在多个游戏平台上推出。该游戏是《拳皇》系列的第三个作品&#xff0c;继承了前作《拳皇96》的“adius”系统&#xff0c;并…

chrome 配置允许跨域

目录 1.Chrome跨域插件配置 1.1启动插件 1.2. 设置本地调试跨域 2 Firefox跨域插件 2.1. 安装插件 CORS Everywhere 2.2. 启动插件 3 工具下载链接 1.Chrome跨域插件配置 使用chrome插件“Allow CORS: Access-Control-Allow-origin ”来解决跨域问题。 点击pin图标&…

东兴市金顺心贸易有限公司联合越南名厨研发的阿吉贡河粉灵魂汤底料

东兴市金顺心贸易有限公司联合越南名厨研发的阿吉贡河粉灵魂汤底料&#xff0c;一包汤底料竟然就能撑起一家店的灵魂&#xff01;&#x1f372; 简单的食材&#xff0c;却散发出不平凡的美味&#xff0c;仿佛带我穿越千里之外。每一口都是满满的幸福与满足&#xff0c;真心推荐…

element ui 的 el-date-picker 日期选择组件设置可选日期范围

有时候&#xff0c;在使用日历控件的时候&#xff0c;我们需要进行定制&#xff0c;控制用户只能在指定日期范围内进行日期选择&#xff0c;在这里&#xff0c;我使用了 element ui 的 el-date-picker 日期选择控件&#xff0c;控制只能选择当前月及往前的2个月&#xff0c;效果…

java 笔记 第十二章 集合(部分整理细化)

集合概述 &#xff08;1&#xff09;集合是存储其他对象的特殊对象。可以将集合当做一个容器。 &#xff08;2&#xff09;集合的相关接口和类位于java.util包中 &#xff08;3&#xff09;集合中的接口和类是一个整体、一个体系。 集合接口 接口定义了一组抽象方法&#x…

98%企业竟存N日漏洞超5年,新漏洞利用攻击时长极速缩短!

专注推动网络与安全融合的全球网络安全领导者 Fortinet&#xff08;NASDAQ&#xff1a;FTNT&#xff09;&#xff0c;近日发布 FortiGuard Labs&#xff08;Fortinet全球威胁情报响应与研究团队&#xff09;《2023 下半年全球威胁态势研究报告》。本次新发布的半年度研究报告&a…

使用Python进行Socket接口测试

大家好&#xff0c;在现代软件开发中&#xff0c;网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯&#xff0c;都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中&#xff0c;Socket&#xff08;套接字&#xff09;技术扮演了重要角色…

python练习题2

python期考复习题 目录 1. 判断n**2的值每一位互不相同​编辑 2. 密码 3. 图书版号 4. 情感分类矩阵 5. 计算数对个数 1. 判断n**2的值每一位互不相同 def isdiff(n):sstr(n)for i in range(len(s)):for j in range(len(s)):if i!j:if s[i]s[j]:return Falsereturn Truel…

Python输入与输出基础

Python输入与输出基础 引言 Python是一种非常直观且功能强大的编程语言&#xff0c;它允许用户轻松地处理输入和输出操作。无论是从用户那里获取数据&#xff0c;还是将结果展示给用户&#xff0c;Python都提供了简单易用的函数和方法。 一、输入数据 在Python中&#xff0c…

CS143 PA3 cool语法解析

代码 /* * cool.y * Parser definition for the COOL language. * */ %{#include <iostream>#include "cool-tree.h"#include "stringtab.h"#include "utilities.h"extern char *curr_filename;/* Locations */#define YYL…

Spring Boot框架的原理及应用详解(二)

本系列文章简介: 在当今的软件开发世界中,快速迭代、高效开发以及易于维护成为了开发者们不断追求的目标。Spring Boot作为Spring框架的一个子项目,自其诞生以来就凭借其“约定大于配置”的理念和自动配置的特性,迅速在Java开发社区中获得了广泛的关注和认可。它简化了Spri…

LSTM理解

目录 一、LSTM的本质 二、LSTM的原理 三、LSTM的应用 本文将从LSTM的本质、LSTM的原理、LSTM的应用三个方面&#xff0c;带您一文搞懂长短期记忆网络Long Short Term Memory | LSTM。 一、LSTM的本质 RNN 面临问题&#xff1a;RNN&#xff08;递归神经网络&#xff09;在处理…

数字时代的软件架构:持续架构的兴起与架构师角色的转变

在数字化浪潮的推动下&#xff0c;软件架构领域正经历着前所未有的变革。Eoin Woods在《数字时代的软件架构》演讲中&#xff0c;深入探讨了这一变革&#xff0c;并提出了“持续架构”这一概念。本文将基于Eoin的观点&#xff0c;结合个人理解&#xff0c;探讨持续架构的重要性…

微信小程序怎么使用地图?

微信小程序使用地图功能时&#xff0c;主要涉及地图组件的引入、配置以及相关的API调用。以下是详细的使用步骤和说明&#xff1a; 1. 引入地图组件 在微信小程序的.wxml文件中&#xff0c;通过<map>标签引入地图组件。你可以设置地图的经纬度、缩放级别、控件等属性。…

Kali系统的中英文切换

执行命令&#xff1a;sudo dpkg-reconfigure locales 命令作用&#xff1a;重新生成locales配置文件并允许你重新选择所需的语言环境。 中文&#xff1a;zh_CN.UTF-8 UTF-8 英文&#xff1a;en_US.UTF-8 UTF-8 用空格键选中和取消选项。 要设置成中文&#xff1a;取消选择en…

MySQL的`EXPLAIN`和Oracle的`EXPLAIN PLAN FOR`都是用于分析和理解SQL查询的执行计划的工具

MySQL的EXPLAIN和Oracle的EXPLAIN PLAN FOR都是用于分析和理解SQL查询的执行计划的工具。它们提供了查询的详细信息&#xff0c;包括表的访问顺序、索引的使用情况、预计的行数和成本等。以下是两者的一些关键点和区别&#xff1a; ### MySQL EXPLAIN&#xff1a; - EXPLAIN用…

ISA95-标准1-模型定义部分的解析

ISA-95定义了五个层次的自动化模型,在MES(制造执行系统)或MOM(制造运营管理)系统中,各个层次的功能模块通常与ISA-95模型的层次相对应。以下是自动化模型定义涉及到的功能模块描述: 1. 0级:物理过程控制 - 功能模块:传感器和执行器管理、基础自动化控制、设备状态监控…