当前位置: 首页 > news >正文

力扣刷题Day 43:矩阵置零(73)

1.题目描述

2.思路

方法1:遍历矩阵的行和列查找0元素并置同行同列的元素为0,新创建一个m*n的矩阵以标记当前的0元素是本身就为0还是被同行同列的元素传染成0的。

方法2:遍历矩阵,记录0元素的行和列,结束遍历后统一置零。

3.代码(Python3)

方法1:

import numpy as npclass Solution:def setZeroes(self, matrix: List[List[int]]) -> None:m, n = len(matrix), len(matrix[0])marked = np.ones((m, n), dtype=int)for i in range(m):for j in range(n):if matrix[i][j] == 0 and marked[i][j] != 0:for k in range(n):if matrix[i][k] != 0:matrix[i][k] = 0marked[i][k] = 0for k in range(m):if matrix[k][j] != 0:matrix[k][j] = 0marked[k][j] = 0

方法2:

class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:m, n = len(matrix), len(matrix[0])zero_i, zero_j = set(), set()for i in range(m):for j in range(n):if matrix[i][j] == 0:zero_i.add(i)zero_j.add(j)for i in zero_i:for k in range(n):matrix[i][k] = 0for j in zero_j:for k in range(m):matrix[k][j] = 0

方法3:

4.执行情况

方法1:

方法2:

5.感想

方法1的空间复杂度为O(m * n),方法2的空间复杂度为O(m + n),官方题解使用两个标记变量的方法虽然实现了O(1)的空间复杂度但是我觉得没那个必要所以没再仔细研究。

http://www.xdnf.cn/news/337303.html

相关文章:

  • 【随笔】Google学术:but your computer or network may be sending automated queries.
  • 红黑树的应用场景 —— 进程调度 CFS 与内存管理
  • 基于SpringBoot的校园周边美食探索及分享平台的设计与实现
  • Linux系统下使用Kafka和Zookeeper
  • C++ | 常用语法笔记
  • 宝塔面板部署 springboot + mysql 项目
  • CMake笔记(简易教程)
  • 【探寻C++之旅】第十三章:红黑树
  • 第8章-3 查询性能优化1
  • kotlin @JvmStatic注解的作用和使用场景
  • 《信息论与编码课程笔记》——信源编码(1)
  • 动态SQL与静态SQL
  • threejs 添加css3d标签 vue3
  • [数据处理] 6. 数据可视化
  • 商业中的人工智能 (AI) 是什么?
  • 从0到1:用Lask/Django框架搭建个人博客系统(4/10)
  • 每日学习:DAY24
  • 第三节第一部分:Static修饰类变量、成员变量
  • pip下载tmp不够
  • ASP.NET Core 中实现 Markdown 渲染中间件
  • 信创生态核心技术栈:数据库与中间件
  • 《智能网联汽车 自动驾驶功能场地试验方法及要求》 GB/T 41798-2022——解读
  • Mac 平台 字体Unicode范围分析器
  • 使用迁移学习的自动驾驶汽车信息物理系统安全策略
  • MySQL数据库创建、删除、修改
  • Android NDK版本迭代与FFmpeg交叉编译完全指南
  • ubuntu24.04安装anaconda
  • SwiftData 数据持久化解决方案
  • 如何使用极狐GitLab 软件包仓库功能托管 python?
  • git设置tabsize