73. Set Matrix Zeroes
2016-07-20 17:54
239 查看
Given a m x n matrix,
if an element is 0, set its entire row and column to 0. Do it in place.
第一行和第一列记录每一列和每一行是否出现过0。另外用两个变量记录第一行和第一列是否出现过0.
class Solution {
public:
void setZeroes(vector<vector<int> >& matrix) {
bool rowZero = false, colZero = false;
for (int i = 0; i < matrix[0].size(); i++){
if (matrix[0][i] == 0){
rowZero = true;
break;
}
}
for (int i = 0; i < matrix.size(); i++){
if (matrix[i][0] == 0){
colZero = true;
break;
}
}
for (int i = 1; i < matrix.size(); i++){
for (int j = 1; j < matrix[0].size(); j++){
if (matrix[i][j] == 0){
matrix[i][0] = matrix[0][j] = 0;
}
}
}
for (int i = 1; i < matrix.size(); i++){
for (int j = 1; j < matrix[0].size(); j++){
if (matrix[i][0]==0||matrix[0][j]==0){
matrix[i][j] = 0;
}
}
}
if (rowZero){
for (int i = 0; i < matrix[0].size(); i++){
matrix[0][i] = 0;
}
}
if (colZero){
for (int i = 0; i < matrix.size(); i++){
matrix[i][0] = 0;
}
}
}
};
if an element is 0, set its entire row and column to 0. Do it in place.
第一行和第一列记录每一列和每一行是否出现过0。另外用两个变量记录第一行和第一列是否出现过0.
class Solution {
public:
void setZeroes(vector<vector<int> >& matrix) {
bool rowZero = false, colZero = false;
for (int i = 0; i < matrix[0].size(); i++){
if (matrix[0][i] == 0){
rowZero = true;
break;
}
}
for (int i = 0; i < matrix.size(); i++){
if (matrix[i][0] == 0){
colZero = true;
break;
}
}
for (int i = 1; i < matrix.size(); i++){
for (int j = 1; j < matrix[0].size(); j++){
if (matrix[i][j] == 0){
matrix[i][0] = matrix[0][j] = 0;
}
}
}
for (int i = 1; i < matrix.size(); i++){
for (int j = 1; j < matrix[0].size(); j++){
if (matrix[i][0]==0||matrix[0][j]==0){
matrix[i][j] = 0;
}
}
}
if (rowZero){
for (int i = 0; i < matrix[0].size(); i++){
matrix[0][i] = 0;
}
}
if (colZero){
for (int i = 0; i < matrix.size(); i++){
matrix[i][0] = 0;
}
}
}
};
相关文章推荐
- UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65
- 自定义Html标签方式
- 深入理解js 闭包
- java高并发解决方案
- 【bzoj1864 [Zjoi2006]】三色二叉树
- RecyclerView(实现分割线)
- nodejs QueryString模块 详解
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
- DeepLearning4J入门——让计算机阅读《天龙八部》
- Geek爱旅行 - github创建自己的网页
- Geek爱旅行 - github创建自己的网页
- Chrome 控制台不完全指南
- [matplotlib] 绘制Cross-Validation的误差图
- git检查本地的代码修改情况
- SQl技巧
- Java 多线程:InheritableThreadLocal 实现原理
- Wolf and Rabbit<hdoj1222>
- Linux的进程间通信 - 管道
- Hibernate开发之二级缓存
- CUDA编程之树状加法