【一天一道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 ...
随机推荐
- 常用java开发文档链接
使用java开源工具httpClient及jsoup抓取解析网页数据 : https://blog.csdn.net/lovoo/article/details/52674712 jsoup Cook ...
- python if判断语句&计算
python对缩进要求严格,代码块里的缩进必须一样,可以常用 tab键 表示4个空格 if 条件: 代码块 else: if判断语句如下: 1 print("吃饭,喝水,回家") ...
- 阿里云linux下web服务器配置
markdown截图不方便,本教程不用markdown编写 首先参考文章 https://www.jianshu.com/p/2604e53a7f6a?from=singlemessage 安装完后无 ...
- python笔记十三(高阶函数、装饰器)
一.高阶函数 函数只要有以下两个特征中一个就可以称为高阶函数: a:函数名作为一个实参传入另一个函数中 b:函数的返回值中包含函数名 下面我们用代码来感受一下这两种形式: import time # ...
- nginx时间设置解析函数
https://trac.nginx.org/nginx/browser/nginx/src/core/ngx_parse.c /* * Copyright (C) Igor Sysoev * Cop ...
- Linux下文件的mtime/atime/ctime研究
概述 在Linux下,对于某一个文件或文件夹时间的描述有三种:文件修改时间mtime,文件访问时间atime,文件状态改变时间ctime.在Linux下无法获取到文件的创建时间,因为根本就没有保存这个 ...
- Android开发学习之路--逆向分析反编译
一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现.对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代 ...
- Xcode 8新功能介绍
概述 Xcode 8正式版在9月13日已经推送给开发者下载,下载之后就出现了很多编译错误,之前的插件也不能用了,但是发现Xcode8把好多不错的插件功能整合到自身了,感觉这点也挺不错. 结合自己遇到的 ...
- 微信开发获取地理位置实例(java,非常详细,附工程源码)
在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础: 1.微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一些必要的配置,以及如何调用微信接口. 2.微信开发之通过代理调试 ...
- VMware 下的CentOS6.7 虚拟机与Windows7通信
在有网络的情况下,VMware 虚拟机使用桥接模式(Bridged) 和NAT方式,会自动通信,但是在没有网络的情况下怎么办呢?对,是的,使用host-only模式,如何设置呢? 注:将Windows ...