leetcode73矩阵置零

https://leetcode-cn.com/problems/set-matrix-zeroes/
解答:
两种方法时间复杂度都为O(mn)
O(m+n)空间方法:
用两个容器储存为0的行和列
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
//O(m+n)额外空间,常数空间???
set<int> rse,cse;
int r=matrix.size();int c=matrix[].size();
for(int i=;i<r;i++){
for(int j=;j<c;j++){
if(matrix[i][j]==){
rse.insert(i);
cse.insert(j);
}
}
}
while(!rse.empty()){
int temp=*rse.begin();
for(int j=;j<c;j++){
matrix[temp][j]=;
}
rse.erase(rse.begin());
}
while(!cse.empty()){
int temp=*cse.begin();
for(int i=;i<r;i++){
matrix[i][temp]=;
}
cse.erase(cse.begin());
}
}
};
常数空间方法:
对于第0行和第0列的数据如果有0,则标记isrow=true, iscol=true来记录是否为0;
对于1~m行和1~n列的数据如果有0,则将其标注在第0行,第0列;即
i : ~m-
j: ~n-
if(matrix[i][j]==)
matrix[i][]=,matrix[][j]=;
C++ code:
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
//常数空间解决方案
//标记第0行和第0列是否为0;
bool isrow=false;
bool iscol=false;
int r=matrix.size();
int c=matrix[].size();
for(int j=;j<c;j++){
if(matrix[][j]==){
isrow=true;break;
}
}
for(int i=;i<r;i++){
if(matrix[i][]==){
iscol=true;break;
}
}
//标记1~n列是否为0,将结果放入第0行和第0列;
for(int i=;i<r;i++){
for(int j=;j<c;j++){
if(matrix[i][j]==){
matrix[i][]=;
matrix[][j]=;
}
}
}
//先将1~n行列的值替换
for(int i=;i<r;i++){
if(matrix[i][]==){
for(int j=;j<c;j++){
matrix[i][j]=;
}
}
}
for(int j=;j<c;j++){
if(matrix[][j]==){
for(int i=;i<r;i++){
matrix[i][j]=;
}
}
}
//再替换0行和0列
if(isrow){
for(int j=;j<c;j++){
matrix[][j]=;
}
}
if(iscol){
for(int i=;i<r;i++){
matrix[i][]=;
}
}
}
};
leetcode73矩阵置零的更多相关文章
- [Swift]LeetCode73. 矩阵置零 | 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 矩阵置零 Python
矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1 ...
- LeetCode:矩阵置零【73】
LeetCode:矩阵置零[73] 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], ...
- Java实现 LeetCode 73 矩阵置零
73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ...
- 【python】Leetcode每日一题-矩阵置零
[python]Leetcode每日一题-矩阵置零 [题目描述] 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解 ...
- leetcode[73] Set Matrix Zeroes 将矩阵置零
给定一个矩阵,把零值所在的行和列都置为零.例如: 1 2 3 1 3 1 1 1 操作之后变为 1 3 0 0 0 1 1 方法1: 赋值另存一个m*n的矩阵,在原矩阵为零的值相应置新的矩阵行和列为零 ...
- 073 Set Matrix Zeroes 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将这个元素所在的行和列都置零.你有没有使用额外的空间?使用 O(mn) 的空间不是一个好的解决方案.使用 O(m + n) 的空间有所改善,但仍不 ...
- leetcode.矩阵.73矩阵置零-Java
1. 具体题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: 输出:[ [ [1,1,1], [1,0,1], [ ...
- leetcode刷题-73矩阵置零
题目 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: ...
随机推荐
- 第十章· Logstash深入-Logstash与Redis那点事
Logstash将日志写入Redis 为什么要使用Redis 在企业中,日志规模的量级远远超出我们的想象,这就是为什么会有一家公司日志易专门做日志收集,给大型金融公司收集日志,比如银行,因为你有可能看 ...
- 【学】第一节 rt-thread的rt_kprintf功能的实现
@2019-06-20 [主题] 拿到一个stm32f407新板,使用rt-thread源码中的bsp中的stm32f407-discovery工程,操作串口外设实现rt_kprintf功能 [问题] ...
- RHEL7 网口绑定Network Teaming
1.选择Networking Teaming配置方法 使用文本用户界面工具nmtui 使用命令行工具nmcli 使用ifcfg配置文件创建网络成组 使用图形用户界面配置网络成组 2.了解主接口 ...
- JSON parse error: syntax error, expect {, actual error, pos 0, fastjson-version 1.2.58; nested exception is com.alibaba.fastjson.JSONExcetion: syntax error, except {, actual error, pos ...
这个报错信息告诉你,你提交的参数需要是json类型.所以,POST请求携带的数据需要序列化一下json.dumps(data).
- YII2.0.12兼容PHP7.2版本升级
YII2.0.12兼容PHP7.2版本升级 报错信息: FastCGI sent in stderr: "PHP message: PHP Fatal error: Cannot use ...
- python 示例代码1
第一章 python基础一 在此不再赘述为什么学习python这门编程,网上搜索一箩筐.我在此仅说一句python的好,用了你就会爱上它. 本python示例代码1000+带你由浅入深的了解pyth ...
- unsigned char数组赋值
memset(send_buf, 0, SEND_BUFF_LEN); const char * pStr = "this is test txt"; strcpy((char*) ...
- python+Appium自动化:Capability配置简介
Capability配置简介 desired capability的功能是配置Appium会话. Desired Capabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的 ...
- Mybatis关联查询(转载)
原文地址: http://www.cnblogs.com/xiaolang8762400/p/7399892.html mybatis 提供了高级的关联查询功能,可以很方便地将数据库获取的结果集映 ...
- VUE-练习
作业一:有红黄蓝三个按钮,以及一个200*200矩形box,点击不同按钮,box的颜色会被切换为指定的颜色 <!DOCTYPE html> <html lang="en&q ...