力扣随机一题 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 = -1
        firstCol = -1
        lastRow = -1
        lastCol = -1
        for row in range(rowNums):
            if firstRow==-1:
                for col in range(colNums):
                    if grid[row][col]==1:
                        if firstRow==-1:
                            firstRow=row
                            break

        for col in range(colNums):
            if firstCol==-1:
                for row in range(rowNums):
                    if grid[row][col]==1:
                        if firstCol==-1:
                            firstCol=col
                            break

        for 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=row
                            break

        for 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=col
                            break

        value = (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. 提高在解决实际问题时,对问题进行分析和转化为代码实现的能力。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最新AI智能聊天对话问答系统源码(图文搭建部署教程)+AI绘画,文生图,TTS语音识别输入,文档分析

一、人工智能语言模型和AI绘画在多个领域广泛应用 人工智能语言模型和AI绘画在多个领域都有广泛的应用。以下是一些它们的主要用处&#xff1a; 人工智能语言模型 内容生成 写作辅助&#xff1a;帮助撰写文章、博客、报告、剧本等。 代码生成&#xff1a;自动生成或补全代码&…

Arduino - Keypad 键盘

Arduino - Keypad Arduino - Keypad The keypad is widely used in many devices such as door lock, ATM, calculator… 键盘广泛应用于门锁、ATM、计算器等多种设备中。 In this tutorial, we will learn: 在本教程中&#xff0c;我们将学习&#xff1a; How to use key…

Kompas AI用户体验与界面设计对比

一、引言 在人工智能&#xff08;AI&#xff09;产品领域&#xff0c;用户体验&#xff08;UX&#xff09;和界面设计&#xff08;UI&#xff09;是衡量产品成功与否的两个关键指标。一个优秀的AI产品不仅需要具备强大的功能&#xff0c;还需要提供流畅、直观且富有吸引力的用…

还不会写WorkFlow?“讲课“即工作流,摩根大通用一段Prompt诱导LLMs自主生成

随着各种自动生成Prompt的工具被开源&#xff0c;Prompt Engineer的生存空间也在不断被压缩&#xff0c;一个明显的转变已经出现&#xff1a;要想在ALL IN AI的状态下生存下去&#xff0c;你要能从Prompt Engineer切换成WorkFlow Engineer。而WorkFlow领域的竞争也是非常激烈的…

CSS 核心知识点 - grid

思维导图 参考网址: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_grid_layout 一、什么是 grid&#xff1f; CSS Grid布局是在CSS3规范中引入的一种新的布局方式&#xff0c;旨在解决传统布局方法&#xff08;如浮动、定位、表格布局&#xff09;存在的许多问题。C…

【STM32修改串口波特率】

STM32微控制器中的串口波特率调整通常涉及到USART&#xff08;通用同步接收器/发送器&#xff09;模块的配置。USART模块提供了多个寄存器来设置波特率&#xff0c;其中关键的寄存器包括BRR&#xff08;波特率寄存器&#xff09;和USART_CR1&#xff08;控制寄存器1&#xff09…

【数学建模】——【python库】——【Pandas学习】

专栏&#xff1a;数学建模学习笔记 pycharm专业版免费激活教程见资源&#xff0c;私信我给你发 python相关库的安装&#xff1a;pandas,numpy,matplotlib&#xff0c;statsmodels 总篇&#xff1a;【数学建模】—【新手小白到国奖选手】—【学习路线】 第一卷&#xff1a;【数学…

推荐系统中冷启动环节的设计实现

推荐系统中的冷启动分为物料冷启动和用户冷启动。用户冷启动主要是针对新用户&#xff0c;但有时候也用于低活用户拉活。物料冷启动主要是让优质物料得到快速下发&#xff0c;让模型可以迅速捕获到用户对该物料的关注。本文将详细讲解用户冷启动和物料冷启动。 1、用户冷启动 用…

SAMformer:通过锐度感知最小化和通道注意力解锁变换器在时间序列预测中的潜力

目录 摘要1. 引言当前方法的局限性变换器的可训练性我们贡献的总结 2. 提出的方法符号说明2.1 问题设置2.2 激励示例命题2.1&#xff08;最优解的存在性&#xff09; 2.3 变换器的损失景观现有的解决方案 2.4. SAMformer&#xff1a;集成所有方法 3. 实验3.1 主要收获 摘要 基…

【Linux系统编程】进程控制(创建、退出、等待、替换)

目录 再聊进程创建 进程终止 进程等待 进程程序替换 再聊进程创建 初识进程创建 关于进程创建&#xff0c;这里只会说结论&#xff0c;在上面这篇文章中对进程创建进行了比较详细的阐述&#xff0c;而接下来要介绍的&#xff0c;都是基于上文说过的来展开的 一些较为重要…

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

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

MySQL8 新特性——公用表表达式用法 with t1 as (select * from user)

MySQL8 新特性——公用表表达式用法_mysql ctes-CSDN博客 1.普通公用表表达式 MySQL8 新特性——公用表表达式用法 在MySQL 8.0及更高版本中&#xff0c;引入了公用表表达式&#xff08;Common Table Expressions&#xff0c;CTEs&#xff09;&#xff0c;它是一种方便且可重…

Echarts地图实现:杭州市困难人数分布【动画滚动播放】

Echarts地图实现&#xff1a;杭州市困难人数分布 实现功能 杭州市地区以及散点图分布结合的形式数据展示动画轮播可进去杭州市下级地区可返回杭州市地图展示 效果预览 实现思路 使用ECharts的地图和散点图功能结合实现地区分布通过动画轮播展示数据变化实现下级地区数据的展…

深度学习论文: VanillaNet: the Power of Minimalism in Deep Learning

深度学习论文: VanillaNet: the Power of Minimalism in Deep Learning VanillaNet: the Power of Minimalism in Deep Learning PDF:https://arxiv.org/pdf/2305.12972 PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks 1 概述 提出的VanillaNet通过简化设计&…

《数字图像处理与机器视觉》案例二(基于边缘检测和数学形态学焊缝图像处理)

一、前言 焊缝是评价焊接质量的重要标志&#xff0c;人工检测方法存在检测标准不统一&#xff0c;检测精度低&#xff0c;焊缝视觉检测技术作为一种重要的质量检测方法&#xff0c;正逐渐在各行各业中崭露头角。把焊缝准确的从焊接工件中准确分割出来是焊缝评价的关键一步&…

API接口示例的设计与实现技巧?如何编写?

API接口示例怎么使用&#xff1f;哪些工具可以生成API接口示例&#xff1f; 一个良好的API接口示例可以显著提升开发效率&#xff0c;改善用户体验&#xff0c;并确保系统的稳定性和可扩展性。AokSend将探讨API接口示例的设计与实现技巧&#xff0c;帮助开发者构建高质量的API…

使用el-amap-info-window遇到的问题

使用的这个库https://github.com/yangyanggu/vue-amap 想要滚动amapInfoWindow里的内容&#xff0c;但不触发地图缩放 默认滚动amapInfoWindow里的内容&#xff0c;会触发地图缩放。看了C站一个大佬的文章解决了。 amapInfoWindow会自动滚动到顶部 我的amapInfoWindow里面用了…

Spring AI 接入OpenAI大模型实现同步和流式对话

接入前准备 第一&#xff0c;准备OpenAI API Key&#xff0c;如果你可以科学上网&#xff0c;可以参照[# 如何获得Open ai key]这篇文章在 OpenAI 官方网站上获取 OpenAI API Key。 第二&#xff0c;如果不能科学上网&#xff0c;我们可以通过一些代理商获取OpenAI API Key&a…

使用gradle上传maven工件到新版maven central仓库central.sonatype.com

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。 该文件夹的生成也十分简单&#xff0c;不用担心。 前言 最近在研究maven插件的时候发现发布的网站发生了变化&#xff0c;使用之前的一些插件没能满足我发布依赖的需求&#xff0c;也可…

Reflexion:通过语言反馈增强的智能体

Reflexion: Language Agents with Verbal Reinforcement Learning Reflexion: language agents with verbal reinforcement learninghttps://proceedings.neurips.cc/paper_files/paper/2023/hash/1b44b878bb782e6954cd888628510e90-Abstract-Conference.html 1.概述 最近,Re…