矩阵置零

2023-11-03

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。

示例 1:

输入: 
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出: 
[
[1,0,1],
[0,0,0],
[1,0,1]
]

示例 2:

输入: 
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出: 
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]

进阶:

一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。
一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
你能想出一个常数空间的解决方案吗?

解答:由于为0所在行或列所有元素赋值为0的过程中,会丢失元素原始的值,即同一行或列可能存在多个0,所以应该先将所有0元素的位置记录下来。O(mn)解法最简单,即额外生成一个M*N的矩阵,在原矩阵上检测0,在新矩阵上赋值。O(m+n)解法指我们只需要记录存在0元素所在的行和列索引即可。
进一步优化的话我们可以在O(m+n)解法上优化,即用原始矩阵的第一行和第一列来记录0原始的行列索引。但此时还需要两个变量来记录原始矩阵第一行和第一列是否包含0元素。代码如下:

class Solution {
   
public:
    void setZeroes(vector<vector<int>>& matrix) {
   
        // 使用常数空间的解法
        // 本质上是在O(m+n)解法基础上优化
        // 使用原始矩阵的第一行和第一列来记录该行/列是否存在0
        // 再使用两个变量来记录第一行/列是否存在0
        int isFirstRowHasZero = 1;
        int isFirstColumnHasZero = 1;
        for(int i=0; i<matrix.size
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

矩阵置零 的相关文章

  • SingalR实现简单的聊天室

    SingalR实现简单的聊天室 SignalR服务端 新建一个ASP NET Core Web API项目 给项目命名为TestSignalRServer 将https取消勾选 之后点击创建 项目创建完成后 新建一个ChatHub类 这个类

随机推荐

  • element plus中的el-link如何去掉下划线

    解决方法 在el link中增加 underline false
  • python-爬虫-xpath方法-批量爬取王者皮肤图片

    import requests from lxml import etree 获取NBA成员信息 发送的地址 url https nba hupu com stats players UA 伪装 google header User Age
  • 哔哩哔哩前端笔试(卷1)

    文章目录 哔哩哔哩前端笔试 1 下面哪个网址和示例符合同源策略 2 关于DOMContentLoaded和load事件说法正确的是 3 如何在 div 容器里展示这几个字符 4 以下是哪一组全是块级元素 5 这个div里面最终的字体颜色是什
  • 常用颜色的RGB值及调色方法

    RGB值指某种颜色中的红 Red 绿 Green 蓝 Blue 成分 理论上讲红绿蓝三种基色按照不同的比例混合可以调配出任何一种颜色来 白色 rgb 255 255 255 黑色 rgb 0 0 0 灰色 rgb 128 128 128 红
  • Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】

    1 前言 动态页面 HTML文档中的部分是由客户端运行JS脚本生成的 即服务器生成部分HTML文档内容 其余的再由客户端生成 静态页面 整个HTML文档是在服务器端生成的 即服务器生成好了 再发送给我们客户端 这里我们可以观察一个典型的供我
  • Java实现QQ机器人

    Java实现QQ机器人 使用Java拦截QQ消息 回复消息 等等 酷Q java 实现 需要下载的文件 https pan baidu com s 13xvYG6VXr9Bj oJokVbJ9w 提取码 od38 解压后 添加上项目依赖 j
  • 如何进行Logstash logstash-input-jdbc插件的离线安装

    我们单位的服务器位于隔离区 不允许链接互联网 因此整理了在ELK集群上离线安装Logstash的jdbc input插件的方法 供大家参考 总体思路是需要一台中转的机器 这台机器需要能够访问互联网 先在这台机器中将需要安装的插件及依赖包制作
  • 2022网鼎杯青龙组签到题+crypto题解

    签到题 解题方法 百度搜答案即可 crypto 题目 小A鼓起勇气向女神索要电话号码 但女神一定要考考他 女神说她最近刚看了一篇发表于安全顶会USENIX Security 2021的论文 论文发现苹果AirDrop隔空投送功能的漏洞 该漏
  • numpy添加新的维度:newaxis

    numpy中包含的newaxis可以给原数组增加一个维度 np newaxis放的位置不同 产生的新数组也不同 一维数组 x np random randint 1 8 size 5 x Out 48 array 4 6 6 6 5 x1
  • 织梦dedecms系统后台添加新变量出现Request var not allow

    论坛上很多人都反馈说在后台添加新变量的时候会出现 Request var not allow 的BUG错误 本文主要就是介绍如何去解决这个问题 下面看具体操纵 在DEDE根目录打开 include common inc php 文件 查找到
  • python排序算法之基数排序

    代码如下 基数排序 1 把数据分为10个桶 以为数字有0 9这10个 2 依次把数据的个位 十位 百位等等各个位数的数据进行分桶排序 放在这10个桶中 3 最大的数有k位 则循环k次 4 时间复杂度O kn 空间复杂度O k n 其中k l
  • 自定义view-饼图

    效果图如下 看到上述view的效果 首先分析view有几部分组成 这里仅做练习 没有做适配 一 view的组成 1 由不同的扇形 2 各分类的线段 3 各分类的名字 1 绘制不同的扇形 这个比容易 首先要弄清楚0度是从哪个位值开始 andr
  • Unity3D_最简单的开始界面_结束界面

    Unity3D 最简单的开始界面 结束界面 开始界面 结束界面 开始界面 1 创建一个新的场景 添加button 2 C 脚本 LoadingGame cs using System Collections using System Col
  • org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded;

    报错信息 org springframework web multipart MaxUploadSizeExceededException Maximum upload size exceeded nested exception is j
  • Vue3全局挂载方法

    方式一 import createApp from vue import App from App vue import router from router const app createApp App app use router a
  • 超级多的yum源哦

    root registry cd etc yum repos d root registry yum repos d vim CentOS Base repo CentOS Base repo The mirror system uses
  • 10秒重启-shell脚本命令:

    bin sh if f reboottest sh then touch reboottest sh echo bin sh gt reboottest sh echo sleep 10 gt gt reboottest sh echo r
  • Doris数仓的4大特点

    01 极简架构 Doris从设计上来说 融合了Google Mesa的数据存储模型 Apache的ORCFile存储格式 Apache Impala查询引擎和MySQL交互协议 是一个拥有先进技术和先进架构的领先设计产品 如图1所示 图1
  • Tools

    代码 css 格式化工具 json 格式化 animate css Iconsfontawesome HTML validation 查询 css 属性 查询 px em pt 之间的转换 wap site 尽量不要固定用px 定死 比如f
  • 矩阵置零

    给定一个 m x n 的矩阵 如果一个元素为 0 则将其所在行和列的所有元素都设为 0 请使用原地算法 示例 1 输入 1 1 1 1 0 1 1 1 1 输出 1 0 1 0 0 0 1 0 1 示例 2 输入 0 1 2 0 3 4 5