mycode

空间复杂度 m+n

思路:用set把为0元素所在行、列记录下来

注意:注释的方法更快

class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
rows = set()
cols = set()
count_row = len(matrix)
count_col = len(matrix[0])
for i in range(count_row):
for j in range(count_col):
if matrix[i][j] == 0:
rows.add(i)
cols.add(j)
#for row in rows:
# matrix[row] = [0]*count_col
#for col in cols:
# for line in matrix:
# line[col] = 0
for i in rows:
for j in xrange(count_col):
matrix[i][j] = 0
for i in xrange(count_row):
for j in cols:
matrix[i][j] = 0
return matrix

参考:

常数空间,用第一行第一列来记录

class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
first_row = False
first_col = False
m = len(matrix)
n = len(matrix[0]) #[[]]
if m == 0 or n == 0 :
return
flag = -1
for i in range(m):
if matrix[i][0] == 0: #说明第一列本来最后就应该都等于0,以免被覆盖
first_col = True
for j in range(n):
if matrix[0][j] == 0:
first_row = True
for i in range(1,m):
for j in range(1,n):
if matrix[i][j] == 0:
matrix[i][0] = matrix[0][j] = 0
#第一行所有列,第一列所有行 为对照表,所以节省了空间
for i in range(1,m):
for j in range(1,n):
if matrix[0][j] == 0 or matrix[i][0] == 0:
matrix[i][j] = 0
if first_row:
for j in range(n):
matrix[0][j] = 0
if first_col:
for i in range(m):
matrix[i][0] = 0

最新文章

  1. 中国式商业智能报表ActiveReports免费公开课,10月20日开讲
  2. Non-blocking read on a subprocess.PIPE in python
  3. json和pickle
  4. HTML 5 应用程序缓存(上)
  5. 一个Java Dao测试用例
  6. 第25章 SEH结构化异常处理_未处理异常及向量化异常
  7. 【hdu3247-Resource Archiver】位压DP+AC自动机+SPFA
  8. JQuery 获取指定url对应的html内容
  9. java基础知识----IO篇
  10. Android手机定位技术的发展
  11. 类间调用inline函数的效率
  12. windows下LINUX模拟终端Cypwin以及Vim的配置使用
  13. nginx切割日志脚本
  14. Spring的事务初见
  15. 网页真机调试之Browsersync简介
  16. Never Wait for Weights(带权并查集+路径压缩)
  17. 如何在 Linux 中查找最大的 10 个文件
  18. socketv 验证客户端链接的合法性,socketserver
  19. luogu 1268 树的重量
  20. Spring Boot 1.5.* 升级 2.1 - 完善中

热门文章

  1. IntelliJ IDEA 2019.3 这回真的要飞起来了,新特性抢先看!
  2. KMP字符串匹配 模板 洛谷 P3375
  3. Luogu P1315 [NOIP2012]观光公交
  4. 题解 AT2684 【K-City】
  5. 在centos6.4下安装python3.5
  6. 目标检测(三) Fast R-CNN
  7. 字符串hash 模板
  8. 100行代码撸完SpringIOC容器
  9. 四:JVM调优原理与常见异常处理方案
  10. redis基础及redis特殊场景使用描述