leetcode: 73. Set Matrix Zeroes
来源:互联网 发布:二手玫瑰知乎 编辑:程序博客网 时间:2024/06/03 23:41
Q
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Follow up:
Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?
AC
class Solution(object): def setZeroes(self, matrix): """ :type matrix: List[List[int]] :rtype: void Do not return anything, modify matrix in-place instead. """ if not matrix: return matrix # find all (row, col) value 0 and put to stack stack = [] rows = len(matrix) cols = len(matrix[0]) for row in xrange(rows): for col in xrange(cols): if matrix[row][col] == 0: stack.append((row, col)) # calc 0 rows and cols rows_zero = set([x[0] for x in stack]) cols_zero = set([x[1] for x in stack]) # set rows zero and cols zero for i in rows_zero: matrix[i] = [0] * cols for j in cols_zero: for i in xrange(rows): matrix[i][j] = 0# Time: O(m * n)# Space: O(1)class Solution2(object): def setZeroes(self, matrix): first_col = reduce(lambda acc, i: acc or matrix[i][0] == 0, xrange(len(matrix)), False) first_row = reduce(lambda acc, j: acc or matrix[0][j] == 0, xrange(len(matrix[0])), False) for i in xrange(1, len(matrix)): for j in xrange(1, len(matrix[0])): if matrix[i][j] == 0: matrix[i][0], matrix[0][j] = 0, 0 for i in xrange(1, len(matrix)): for j in xrange(1, len(matrix[0])): if matrix[i][0] == 0 or matrix[0][j] == 0: matrix[i][j] = 0 if first_col: for i in xrange(len(matrix)): matrix[i][0] = 0 if first_row: for j in xrange(len(matrix[0])): matrix[0][j] = 0if __name__ == "__main__": matrix = [ [1, 0, 1, 1], [1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 1]] Solution().setZeroes(matrix) assert matrix == [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [1, 0, 0, 0]]
阅读全文
0 0
- [LeetCode]73.Set Matrix Zeroes
- LeetCode --- 73. Set Matrix Zeroes
- [Leetcode] 73. Set Matrix Zeroes
- [leetcode] 73.Set Matrix Zeroes
- 【leetcode】73. Set Matrix Zeroes
- [leetcode] 73. Set Matrix Zeroes
- Leetcode 73. Set Matrix Zeroes
- LeetCode 73. Set Matrix Zeroes
- LeetCode 73. Set Matrix Zeroes
- 73. Set Matrix Zeroes LeetCode
- [LeetCode]73. Set Matrix Zeroes
- [LeetCode]73. Set Matrix Zeroes
- leetcode 73. Set Matrix Zeroes
- LeetCode 73. Set Matrix Zeroes
- LeetCode *** 73. Set Matrix Zeroes
- leetcode 73. Set Matrix Zeroes
- [LeetCode]73. Set Matrix Zeroes
- LeetCode-73. Set Matrix Zeroes
- 分布式事务-下单、支付案例
- leetcode: 72. Edit Distance
- LVM
- clk_get_rate函数
- Java三目运算符
- leetcode: 73. Set Matrix Zeroes
- 数据库索引是怎样工作的?
- Redis & Hash
- Golang连接SQLite、MySQL、ORacle
- studio 3.0版本使用ButterKnife
- leetcode: 74. Search a 2D Matrix
- 提高JavaScript性能②
- 机器学习面试系列一
- wamp报错总结