当前位置: 首页 > 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)的空间复杂度但是我觉得没那个必要所以没再仔细研究。

相关文章:

  • MATLAB 在医疗行业的应用
  • 《AI大模型应知应会100篇》第52篇:OpenAI API 使用指南与最佳实践
  • 遗传算法求解异构车队VRPTW问题
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】8.4 数据故事化呈现(报告结构设计/业务价值提炼)
  • vue修改了node_modules中的包,打补丁
  • 【IP101】图像压缩技术详解:从JPEG到小波压缩的完整指南
  • Flink SQL DataStream 融合开发模式与动态配置热加载机制实战
  • 73页最佳实践PPT《DeepSeek自学手册-从理论模型训练到实践模型应用》
  • 【WEB3】区块链、隐私计算、AI和Web3.0——数据民主化(1)
  • 【CTFer成长之路】举足轻重的信息搜集
  • Vim 编辑器常用快捷键速查表
  • 【AXI总线专题】-AXI-LITE总线解读
  • Django rest_framework 信号机制生成并使用token
  • 如何使用Java从PDF文件中提取图像(教程)
  • SpringBoot学生操行评分系统源码设计开发
  • 【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来
  • 私服与外挂:刑事法律风险的深度剖析
  • k8s监控方案实践(一):部署Prometheus与Node Exporter
  • Kubernetes外部访问服务全攻略:生产级方案详解
  • 拥塞控制 流量控制 区别
  • 洲际酒店:今年第一季度全球酒店平均客房收入同比增长3.3%
  • 体坛联播|曼联热刺会师欧联杯决赛,多哈世乒赛首日赛程出炉
  • 一热就出汗 VS 热死都不出汗的人,哪个更健康?
  • 罗氏制药全新生物制药生产基地投资项目在沪启动:预计投资20.4亿元,2031年投产
  • 中国电信财务部总经理周响华调任华润集团总会计师
  • 央行宣布优化两项支持资本市场的货币政策工具