【LeetCode】Set Matrix Zeroes 解题报告
今天看到CSDN博客的勋章换了图表,同一时候也添加显示了博客等级,看起来都听清新的,感觉不错!
【题目】
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
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?
【思路】
我直接看了以下的要求,最先想到的就是O(m+n)的空间,就是加一行一列来标记哪行哪列有0;反而是O(mn)的空间不知该怎么利用了。
接下来想O(1)空间,略微一想,居然想到了答案,就是相比用O(m+n)的空间,不额外加一行一列,就用第一行和第一列来存储哪行哪列有0。当然,这样做比較麻烦的是第一行第一列的原始信息,须要先保存下来。
前两次写的时候,因为第一行第一列没有处理好,导致WA。
AC后看网上答案,看到其它人也是这么一个思路,挺高兴的。
【Java代码,O(1)空间】
public class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
int i, j;
//先标记第一行和第一列是否有0
boolean firstRow = false, firstCol = false;
for (j = 0; j < n; j++) {
if (0 == matrix[0][j]) {
firstRow = true;
break;
}
}
for (i = 0; i < m; i++) {
if (0 == matrix[i][0]) {
firstCol = true;
break;
}
}
//从第二行第二列还是遍历,假设遇到0,则把它所在行和列的第一个值设为0
for (i = 1; i < m; i++) {
for (j = 1; j < n; j++) {
if (0 == matrix[i][j]) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
//把第一列的0所在行都设为0,把第一行的0所在列都设为0
for (i = 1; i < m; i++) {
if (0 == matrix[i][0]) {
for (j = 1; j < n; j++) {
matrix[i][j] = 0;
}
}
}
for (j = 1; j < n; j++) {
if (0 == matrix[0][j]) {
for (i = 1; i < m; i++) {
matrix[i][j] = 0;
}
}
}
//依据标记决定第一行和第一列是否全设为0
if (firstRow) {
for (j = 0; j < n; j++) {
matrix[0][j] = 0;
}
}
if (firstCol) {
for (i = 0; i < m; i++) {
matrix[i][0] = 0;
}
}
}
}
【LeetCode】Set Matrix Zeroes 解题报告的更多相关文章
- LeetCode: Set Matrix Zeroes 解题报告
Set Matrix ZeroesGiven a m x n matrix, if an element is 0, set its entire row and column to 0. Do it ...
- LeetCode: Spiral Matrix II 解题报告-三种方法解决旋转矩阵问题
Spiral Matrix IIGiven an integer n, generate a square matrix filled with elements from 1 to n2 in sp ...
- 【LeetCode】73. Set Matrix Zeroes 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 原地操作 新建数组 队列 日期 题目地址:https ...
- LeetCode 283 Move Zeroes 解题报告
题目要求 Given an array nums, write a function to move all 0's to the end of it while maintaining the re ...
- 【LeetCode】474. Ones and Zeroes 解题报告(Python)
[LeetCode]474. Ones and Zeroes 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ ...
- LeetCode 1 Two Sum 解题报告
LeetCode 1 Two Sum 解题报告 偶然间听见leetcode这个平台,这里面题量也不是很多200多题,打算平时有空在研究生期间就刷完,跟跟多的练习算法的人进行交流思想,一定的ACM算法积 ...
- 【LeetCode】Permutations II 解题报告
[题目] Given a collection of numbers that might contain duplicates, return all possible unique permuta ...
- 【LeetCode】Island Perimeter 解题报告
[LeetCode]Island Perimeter 解题报告 [LeetCode] https://leetcode.com/problems/island-perimeter/ Total Acc ...
- 【LeetCode】Largest Number 解题报告
[LeetCode]Largest Number 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/largest-number/# ...
随机推荐
- 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
使用MySQL Workbench建立数据库,建立新的表,向表中添加数据 初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MyS ...
- 源代码版本控制工具TortoiseSVN,AnkhSVN最新版本下载地址
TortoiseSVN http://tortoisesvn.net/downloads.html 页面下部有中文语言补丁 AnkhSVN https://ankhsvn.open.collab.ne ...
- 对ESB概念的理解(转)
http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/ 什么是 ESB?ESB 严格来说不是某一个产品,而是一种框架,设计模式. ...
- Java知多少(87)选择框和单选按钮(转)
选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(J ...
- Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)
问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...
- 最简单的视音频播放演示样例8:DirectSound播放PCM
===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...
- Codeforces 437E The Child and Polygon(间隔DP)
题目链接:Codeforces 437E The Child and Polygon 题目大意:给出一个多边形,问说有多少种切割方法.将多边形切割为多个三角形. 解题思路:首先要理解向量叉积的性质,一 ...
- 怎么将Emeditor设置成网页查看源代码的默认编译器
1.打开emditor: 2.在菜单栏中找到工具---->自定义,打开自定义窗口: 3.快捷方式--->更多快捷方式 5.选中“在internet explorer中通过emeditor查 ...
- JAVA学习课第五 — IO流程(九)文件分割器合成器
文件分割器 private static final int SIZE = 1024 *1024; public static void splitFile(File file) throws IOE ...
- ehCache浅谈(转)
ehcache FAQ中提到 Remember that a value in a cache element is globally accessible from multiple threads ...