博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】73. Set Matrix Zeroes 矩阵为0的位的行、列原地都置为0
阅读量:7192 次
发布时间:2019-06-29

本文共 1540 字,大约阅读时间需要 5 分钟。

1. 题目

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

对matrixi==0的部分,对i行、j列全部原地置为0.

2. 思路

找到第一个0的位置,将这个位置的行和列作为标记数组。

3. 代码

耗时:53ms

class Solution {public:    // 遍历找到第一个0,用这个0所在的行和列作为对应行列是否有0的标记位组。    void setZeroes(vector
>& matrix) { if (matrix.size() == 0) { return ; } // 计算行列为0的标签 int flag_i = -1; int flag_j = -1; for (int i = 0; i < matrix.size(); i++) { vector
& line = matrix[i]; for (int j = 0; j < line.size(); j++) { if (line[j] != 0) { continue; } if (flag_i == -1) { flag_i = i; flag_j = j; break; // 标签行可以跳过了 } else { matrix[i][flag_j] = 0; matrix[flag_i][j] = 0; } } } if (flag_i == -1) { return ; } // 清理行列为0的 vector
& flag_line = matrix[flag_i]; for (int i = 0; i < matrix.size(); i++) { if (i == flag_i) { continue; } vector
& line = matrix[i]; for (int j = 0; j < line.size(); j++) { if (j == flag_j) { continue; } if (line[flag_j] == 0 || flag_line[j] == 0) { line[j] = 0; } } line[flag_j] = 0; // 最后清理一下标记列位 } // 清理标记行 for (int j = 0; j < flag_line.size(); j++) { flag_line[j] = 0; } return ; }};

转载地址:http://dyxkm.baihongyu.com/

你可能感兴趣的文章
log4j 日志分类级别配置
查看>>
40+SublimeText插件
查看>>
swift - 动画学习
查看>>
java 细说String
查看>>
单片机C语言探究--为什么变量最好要赋初值
查看>>
静态库嵌套引用问题
查看>>
spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
查看>>
taro 不支持render中,使用函数多条件渲染
查看>>
Array相关的属性和方法
查看>>
SQL基本用法-行转列
查看>>
LeetCode 265: Paint House II
查看>>
Navicat 远程连接 Oracle11g 数据库报错 No listener 的问题
查看>>
python设计模式之单例模式
查看>>
Flex 布局教程:语法篇
查看>>
JVM内存模型和内存分配学习心得
查看>>
学术家族树典型用户的场景模拟
查看>>
CUDA-GPU编程
查看>>
JSP+Servlet实现验证码生成
查看>>
Winform下的Datagrid的列风格(1)—DataGridComboBoxColumn (ZHUAN)
查看>>
Java中instanceof的用法
查看>>