题目

Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.

写一个函数处理一个MxN的矩阵,如果矩阵中某个元素为0,那么把它所在的行和列都置为0.

解答

简单题。遍历一次矩阵,当遇到元素等于0时,记录下这个元素对应的行和列。
可以开一个行数组row和列数组col,当元素a[i][j]等于0时, 就把row[i]和col[j]置为1。
第二次遍历矩阵时,当某个元素对应的行row[i] 或列col[j]被设置为1,说明该元素在需要被置0的行或列上,因此将它(行/列)置0。

代码如下:

#include <iostream>
#include <cstring>
using namespace std;void zero(int a[5][5], int m, int n){bool row[m], col[n];memset(row, 0, sizeof(row));memset(col, 0, sizeof(col));for(int i=0; i<m; ++i)for(int j=0; j<n; ++j)if(a[i][j] == 0){row[i] = true;col[j] = true;}for(int i=0; i<m; ++i)for(int j=0; j<n; ++j)if(row[i] || col[j])a[i][j] = 0;
}int main()
{int a[5][5] = {{1, 2, 3, 4,5},{5, 6, 0, 7,8},{9, 0, 1, 1,2},{3, 4, 1, 1,9},{4, 3, 0, 6,9}};for(int i=0; i<5; ++i){for(int j=0; j<5; ++j)cout<<a[i][j]<<" ";cout<<endl;}cout<<endl;zero(a, 5, 5);for(int i=0; i<5; ++i){for(int j=0; j<5; ++j)cout<<a[i][j]<<" ";cout<<endl;}cout<<endl;return 0;
}

输出结果:

转载于:https://www.cnblogs.com/webmen/p/5739079.html

经典算法面试题目-置矩阵行列元素为0(1.7)相关推荐

  1. 经典算法面试题目-设计算法移除字符串中重复的字符(1.3)

    题目 Design an algorithm and write code to remove the duplicate characters in a string without using a ...

  2. 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)

    题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given tw ...

  3. 经典算法面试题目-翻转一个C风格的字符串(1.2)

    题目: Write code to reverse a C-Style String. (C-String means that "abcd" is represented as ...

  4. 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...

    为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...

  5. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

  6. 经典.NET面试题目

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :   私有成员, 在类的内部才可以访问.       protect ...

  7. 推荐系统经典算法之——MF(矩阵分解)

    1.来源 矩阵分解算法(MF)是为了解决协同过滤算法(CF)在以下两点上的不足而提出的. CF处理稀疏矩阵的能力弱. CF中相似度矩阵的维护难度大. e.g. user矩阵为mm,item矩阵为nn, ...

  8. JAVA经典算法面试40题及答案

    By Lee - Last updated: 星期日, 三月 9, 2014 现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作.现在的招聘他们有时会给你出一套面试题或者智力 ...

  9. BATJ经典软件测试面试题目(内附答案)

    Time will tell(时间会证明一切). 题目 一.单项选择题,共20小题 二.判断题,共10小题 三.填空题,共10小题20个空 四.名词解释,共5小题 五.简答题,共3小题 六.综合题 一 ...

最新文章

  1. 五步让你玩转CocoaPods
  2. selenium - 下拉框操作
  3. 在windows安装配置Git开发环境
  4. nagios 监控平台搭建
  5. 雅思8分大神叫你如何学习口语
  6. SQL语句大全(2)
  7. 教你用 3 台机器搞定一个 Redis 高可用架构
  8. ASP从HTML标签中提取中文
  9. vr降噪器英文是什么_耳机降噪功能这么多,说说什么是ANC、ENC、CV...
  10. o'Reill的SVG精髓(第二版)学习笔记——第四章
  11. glog学习(二):glog主要接口和类分析
  12. 统计数组中出现次数最多的元素并输出
  13. T3500通过PXE克隆报“Unable to Control A20 Line XMS Driver not installed”
  14. oracle和mysql建表语句的区别_mysql和oracle建表语句的区别
  15. Redis详细下载安装教程
  16. 关于74HC573使用
  17. HC05蓝牙模块与stm32通信
  18. socketTCP协程文件+信息传递 - TCP聊天文件服务器v1.9 - 划时代的版本更新(4.6万字)
  19. Python制作自己的第一人称射击游戏
  20. 偏导数(Partial Derivative)

热门文章

  1. glusterfs快速安装
  2. python文件压缩
  3. Leetcode Permutation Sequence
  4. 职业生涯中12个愚蠢想法
  5. snort3安装教程
  6. 整合spring cloud云架构 - Gateway的基本入门
  7. JavaScript之词法作用域和动态作用域
  8. Gartner魔力象限IBM被评为固态阵列市场领导厂商
  9. Rancher通过Aliyun-slb服务对接阿里云SLB教程
  10. SpringMVC 原理和流程