【一天一道LeetCode】#73. Set Matrix Zeroes
一天一道LeetCode
本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处
(一)题目
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
(二)解题
题目大意:给定一个M*N的数组,如果(i,j)为0,则将第i行第j列全部元素置为0。
这道题目意思很简单,如果考虑到用辅助空间来计算就超级简单了,本题不允许用辅助空间!
那么,我们换个思路,利用矩阵自身来存储需要修改的信息。
这里我们考虑将需要修改的行列信息存储在第0行和第0列。具体见代码:
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int row = matrix.size();
if(row==0) return;
int col = matrix[0].size();
int R0flag = false;//记录第0行是否存在0
int C0flag = false;//记录第0列是否存在0
for(int i = 0 ; i< row ; i++)
{
if(matrix[i][0]==0) {C0flag=true;break;}//扫描第0列
}
for(int i = 0 ; i< col ; i++)
{
if(matrix[0][i]==0) {R0flag=true;break;}//扫描第0行
}
//扫描整个数组,用matrix[i][0]保存需要修改的列, matrix[0][j]保存需要修改的行
for(int i = 0 ; i < row ;i++)
{
for(int j = 0 ; j < col ; j++)
{
if(matrix[i][j] == 0)
{
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
//修改1~col-1列
for(int i = 1 ; i< row ; i++)
{
if(matrix[i][0]==0){
for(int j = 0 ; j< col ; j++)
{
matrix[i][j]=0;
}
}
}
//修改1~row-1行
for(int i = 1 ; i< col ; i++)
{
if(matrix[0][i]==0){
for(int j = 0 ; j< row ; j++)
{
matrix[j][i]=0;
}
}
}
//修改第0行和第0列
if(R0flag){
for(int i = 0 ; i < col ; i++) matrix[0][i] =0;
}
if(C0flag){
for(int i = 0 ; i < row ; i++) matrix[i][0] =0;
}
}
};
【一天一道LeetCode】#73. Set Matrix Zeroes的更多相关文章
- [LeetCode] 73. 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. Exampl ...
- Leetcode#73 Set Matrix Zeroes
原题地址 用矩形的第一行和第一列充当mask 代码: void setZeroes(vector<vector<int> > &matrix) { ].empty()) ...
- [LeetCode] 73. 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. Follow ...
- leetcode[73] Set Matrix Zeroes 将矩阵置零
给定一个矩阵,把零值所在的行和列都置为零.例如: 1 2 3 1 3 1 1 1 操作之后变为 1 3 0 0 0 1 1 方法1: 赋值另存一个m*n的矩阵,在原矩阵为零的值相应置新的矩阵行和列为零 ...
- 【LeetCode】73. Set Matrix Zeroes (2 solutions)
Set Matrix Zeroes Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do i ...
- 【LeetCode】-- 73. Set Matrix Zeroes
问题描述:将二维数组中值为0的元素,所在行或者列全set为0:https://leetcode.com/problems/set-matrix-zeroes/ 问题分析:题中要求用 constant ...
- 【LeetCode】73. Set Matrix Zeroes 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 原地操作 新建数组 队列 日期 题目地址:https ...
- LeetCode OJ 73. 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 ...
- 【LeetCode】73. 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. Fo ...
随机推荐
- Eclipse创建Maven工程
Eclipse创建Maven工程: Eclipse: New -> Other -> Maven Project -> Next -> webapp -> Finish ...
- 阻止Enter键回发到服务端Asp.net
//阻止enter键回发到服务端$(function () { $("input[type=text]").each(function () { $(this) ...
- k8s Kubernetes v1.10
#转移页面 http://www.cnblogs.com/elvi/p/8976305.html
- 疯狂的Django 之深度外键跨表查找之疯狂INNER JOIN
定义Model: from django.db import models class Moreinfo(models.Model): weight = models.FloatField() hei ...
- md编辑器测试
markdown 这是一个代码 print
- android MultiDex multidex原理下超出方法数的限制问题(三)
android MultiDex 原理下超出方法数的限制问题(三) 插件化?自动化?multiDex?是不是觉得已经懵逼了?请先看这篇文章的内容,在下篇文章中将会详解具体的过程- 随着应用不断迭 ...
- Android输入事件详解
输入事件 在 Android 系统中,从用户与应用的交互中截获事件的方法不止一种.如考虑截获用户界面内的事件,则可从用户与之交互的特定视图对象中捕获事件. 为此,View 类提供了多种方法. 在您将用 ...
- tolua++没法用
tolua++没法用(金庆的专栏)觉得从C++头文件生成lua绑定代码的方法比较简单,想试试tolua++.从Github获取toluapp:https://github.com/LuaDist/to ...
- 理解性能的奥秘——应用程序中慢,SSMS中快(6)——SQL Server如何编译动态SQL
本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(5)--案例:如何应对参数嗅探 我们抛开参数嗅探的话题,回到了本系列的最 ...
- html5全解析
htm是软件开发中非常基础的知识,也是很重要的知识,在web中是很重要的知识点,在此梳理一下主要内容: 1.HTML是什么? 全称为HyperText Markup Language,超文本标记语言, ...