程序员面试金典 1.7 清除行列
2016-02-22 11:59
246 查看
题目
请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。给定一个MxN的int[][]矩阵(C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。
我的题解
vector<vector<int> > clearZero(vector<vector<int> > mat, int n) { // 标记需要清楚的行与列,然后执行 vector<int> vec(n, 0); int i, j; for(i = 0; i < n; ++ i) { for(j = 0; j < n; ++ j) { if(mat[i][j] == 0) { vec[i] |= 2; vec[j] |= 1; } } } for(i = 0; i < n; ++ i) { if((vec[i] & 2) > 0) { for(j = 0; j < n; j ++) mat[i][j] = 0; } if((vec[i] & 1) > 0) { for(j = 0; j < n; j ++) mat[j][i] = 0; } } return mat; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 开发人员、程序员与计算机科学家三者之间的区别
- 如何写好 C main 函数
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 程序员必备,程序员四大忌
- 程序员们,做好你手里的俩份试卷
- 程序员必备的10大健康装备! 我们要工作更要健康!
- Lua和C语言的交互详解
- 一篇关于程序员性格的文章第1/3页
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 8种类型极品程序员,不知你属于哪一种?
- 程序员编程从初级到中级的10个秘诀
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法