LeetCode 73. Set Matrix Zeroes(矩阵清零)
2016-05-22 05:18
489 查看
原题网址:https://leetcode.com/problems/set-matrix-zeroes/
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
click to show follow up.
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?
方法一:使用行和列哈希。
方法二:将哈希映射到第一行和第一列,注意顺序问题。
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
click to show follow up.
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?
方法一:使用行和列哈希。
public class Solution { public void setZeroes(int[][] matrix) { boolean[] row = new boolean[matrix.length]; boolean[] col = new boolean[matrix[0].length]; for(int i=0; i<matrix.length; i++) { for(int j=0; j<matrix[i].length; j++) { if (matrix[i][j]==0) { row[i] = true; col[j] = true; } } } for(int i=0; i<matrix.length; i++) { if (row[i]) { for(int j=0; j<matrix[i].length; j++) matrix[i][j] = 0; } } for(int j=0; j<matrix[0].length; j++) { if (col[j]) { for(int i=0; i<matrix.length; i++) matrix[i][j] = 0; } } } }
方法二:将哈希映射到第一行和第一列,注意顺序问题。
public class Solution { public void setZeroes(int[][] matrix) { boolean top = false; for(int j=0; j<matrix[0].length; j++) { if (matrix[0][j] == 0) { top = true; break; } } boolean left = false; for(int i=0; i<matrix.length; i++) { if (matrix[i][0] == 0) { left = true; break; } } for(int i=1; i<matrix.length; i++) { for(int j=1; j<matrix[i].length; j++) { if (matrix[i][j] == 0) { matrix[i][0] = 0; matrix[0][j] = 0; } } } for(int i=1; i<matrix.length; i++) { for(int j=1; j<matrix[i].length; j++) { if (matrix[i][0] == 0 || matrix[0][j] == 0) matrix[i][j] = 0; } } if (top) Arrays.fill(matrix[0], 0); if (left) { for(int i=0; i<matrix.length; i++) matrix[i][0] = 0; } } }
相关文章推荐
- 输入输出外挂总结
- leetcode #22 in cpp
- 关于Gson.jar导入正常使用,代码无错,但程序执行解析时崩溃的一些问题
- [PWA] 18. Clean the photo cache
- leetcode #21 in cpp
- mathematica试除法解素数问题
- 全局eval的实现
- 法国劳动法案引大罢工 一场“无解”的左翼运动
- [PWA] 17. Cache the photo
- Notepad++正则表达式中几点需要注意的地方
- python sorted
- 303. Range Sum Query - Immutable
- notepad++正则匹配及匹配内容的保留与处理
- 浅谈多线程中GCD(有图有真相) iOS中如何实现多线程同步
- 框架 day33 Hibernate,组件映射,继承映射,抓取(检索)策略-优化,检索方式总结
- 实战SSH端口转发
- equal_range用法
- [leetcode] 【数组】27. Remove Element
- 明明将gson-2.3.1.jar 包复制粘贴在所在工程libs目录下,却无法使用
- 将项目改为MRC的方法(有图有真相)