打卡群刷题总结0720——矩阵置零
时间:2022-07-22
本文章向大家介绍打卡群刷题总结0720——矩阵置零,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:73. 矩阵置零
链接:https://leetcode-cn.com/problems/set-matrix-zeroes
给定一个 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) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个常数空间的解决方案吗?
解题:
1、遍历,将0所在行和所在列的非0元素用其他数字来替换,最后将所有替换的数字换成0。
代码:
1、常数空间
class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
# 常数
if len(matrix) == 0 or len(matrix[0]) == 0:
return matrix
rows = []
cols = []
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
for c in range(len(matrix[0])):
if matrix[i][c] != 0:
matrix[i][c] = -1e9
for r in range(len(matrix)):
if matrix[r][j] != 0:
matrix[r][j] = -1e9
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == -1e9:
matrix[i][j] = 0
2、O(m+n)空间
class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
# m + n
if len(matrix) == 0 or len(matrix[0]) == 0:
return matrix
rows = []
cols = []
for i in range(len(matrix)):
for j in range(len(matrix[0])):
if matrix[i][j] == 0:
rows.append(i)
cols.append(j)
rows = list(set(rows))
cols = list(set(cols))
for r in rows:
for j in range(len(matrix[0])):
matrix[r][j] = 0
for i in range(len(matrix)):
for c in cols:
matrix[i][c] = 0
- nyoj------擅长排列的小明
- HDUOJ-------(1211)RSA
- HDUOJ----1301 Jungle Roads
- try语句...
- HDUOJ---1233还是畅通工程
- HDUOJ---1863畅通工程
- HDUOJ---1879 继续畅通工程
- MySQL命令行工具:percona-toolkit安装使用初探
- 解决Nginx配置http2不生效,谷歌浏览器仍然采用http1.1协议问题
- 海量数据切分抽取的实践场景(r11笔记第43天)
- 使用shell自动化诊断性能问题(一)(r11笔记第41天)
- Data Guard实现故障自动切换(二)(r11笔记第40天)
- Oracle Data Guard延迟的原因(r11笔记第69天)
- 一个细小的空间问题触发的报警(r11笔记第68天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法