想要看更加舒服的排版、更加准时的推送
关注公众号“不太灵光的程序员”
每日八点有干货推送,微信随时解答你的疑问
矩阵
中等
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
from typing import List
# 63%
# 执行用时:52 ms
# 内存消耗:14.1 MB
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
m = len(matrix)
n = len(matrix[0])
temp = []
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
temp.append((i, j))
for i, j in temp:
for k in range(m):
matrix[k][j] = 0
for k in range(n):
matrix[i][k] = 0
# 98.4%
# 执行用时:40 ms
# 内存消耗:13.9 MB
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
if matrix:
m = len(matrix)
n = len(matrix[0])
mi = set()
ni = set()
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
mi.add(i)
ni.add(j)
for i in mi:
for j in range(n):
matrix[i][j] = 0
for j in ni:
for i in range(m):
matrix[i][j] = 0
if __name__ == "__main__":
s = Solution()
m = [
[1, 1, 1],
[1, 0, 1],
[1, 1, 1]
]
s.setZeroes(m)
print(m)
m = [
[0, 1, 2, 0],
[3, 4, 5, 2],
[1, 3, 1, 5]
]
s.setZeroes(m)
print(m)
m = [
[0, 1, 2, 0, 1],
[3, 4, 0, 2, 1],
[1, 3, 1, 5, 1]
]
s.setZeroes(m)
print(m)
本文地址:https://blog.csdn.net/qq_23934063/article/details/107449662
如对本文有疑问, 点击进行留言回复!!
第二章 如何利用Python读取Oracle表数据和表头转化为字典类型
荐 Python基础知识(一):变量与赋值、运算符、数据类型及位运算
python漫画爬虫:我不做人了,b站!爬取辉夜大小姐等漫画
【LeeCode 中等 数学 python3】剑指 Offer 43. 1~n整数中1出现的次数
网友评论