leetcode_073 Set Matrix Zeros
2016-03-25 21:40
471 查看
题目分析:对于一个给定的矩阵,如果它其中的某个元素为0,则将该元素所在行和列的值均变为0。
解题思路:
1)创建一个两个数组,分别用于记录矩阵中的行和列是否需要变为0的标志;
2)遍历矩阵,标记矩阵中哪些行和哪些列元素需要变为0;
3)遍历矩阵,根据矩阵中对应行列是否为0标志来更改矩阵中的元素即可。
class Solution
{
public:
void setZeros(vector< vector<int> > &matrix)
{
// 获取矩阵的行数
int row = matrix.size();
if (row < 1)
return ;
// 获取矩阵的列数
int col = matrix[0].size();
// 定义存放行列是否变0标志数组
vector<bool> colRecorder(col, false);
vector<bool> rowRecorder(row, false);
// 遍历矩阵,标志哪些行和哪些列需要变为0
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (matrix[i][j] == 0)
{
rowRecorder[i] = true;
colRecorder[j] = true;
}
}
}
// 遍历矩阵,根据行列是否为0标志对矩阵中的数据进行更改
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (rowRecorder[i])
matrix[i][j] = 0;
else if (colRecorder[j])
matrix[i][j] = 0;
}
}
}
};
解题思路:
1)创建一个两个数组,分别用于记录矩阵中的行和列是否需要变为0的标志;
2)遍历矩阵,标记矩阵中哪些行和哪些列元素需要变为0;
3)遍历矩阵,根据矩阵中对应行列是否为0标志来更改矩阵中的元素即可。
class Solution
{
public:
void setZeros(vector< vector<int> > &matrix)
{
// 获取矩阵的行数
int row = matrix.size();
if (row < 1)
return ;
// 获取矩阵的列数
int col = matrix[0].size();
// 定义存放行列是否变0标志数组
vector<bool> colRecorder(col, false);
vector<bool> rowRecorder(row, false);
// 遍历矩阵,标志哪些行和哪些列需要变为0
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (matrix[i][j] == 0)
{
rowRecorder[i] = true;
colRecorder[j] = true;
}
}
}
// 遍历矩阵,根据行列是否为0标志对矩阵中的数据进行更改
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (rowRecorder[i])
matrix[i][j] = 0;
else if (colRecorder[j])
matrix[i][j] = 0;
}
}
}
};
相关文章推荐
- Docker隔绝上传文件
- Python介绍、环境搭建(Eclipse插件)、第一个程序
- 链表系列算法精选
- WPF学习——依赖项属性(2)
- 二、初学SpringMVC+Mybatis之Spring IOC
- Javascript
- 大数相加
- SHELL脚本监控JAVA进程的代码
- 观察观察观察
- SA模板
- 软件工程_东师站_课堂笔记
- linux设置网络传输包mtu
- EditText光标位置的改变
- Leetcode 117. Populating Next Right Pointers in Each Node II
- PHP:微信公众号的红包发送功能
- [bzoj4454]C Language Practice 解题报告
- nginx如何创建多个主机
- FastReport快速安装教程
- 数据结构(java语言描述)模式匹配——KMP算法
- 总结