经典算法面试题目-置矩阵行列元素为0(1.7)
题目
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.3)
题目 Design an algorithm and write code to remove the duplicate characters in a string without using a ...
- 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)
题目 Assume you have a method isSubstring which checks if one word is a substring of another. Given tw ...
- 经典算法面试题目-翻转一个C风格的字符串(1.2)
题目: Write code to reverse a C-Style String. (C-String means that "abcd" is represented as ...
- 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...
为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...
- Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer
剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...
- 经典.NET面试题目
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protect ...
- 推荐系统经典算法之——MF(矩阵分解)
1.来源 矩阵分解算法(MF)是为了解决协同过滤算法(CF)在以下两点上的不足而提出的. CF处理稀疏矩阵的能力弱. CF中相似度矩阵的维护难度大. e.g. user矩阵为mm,item矩阵为nn, ...
- JAVA经典算法面试40题及答案
By Lee - Last updated: 星期日, 三月 9, 2014 现在是3月份,也是每年开年企业公司招聘的高峰期,同时有许多的朋友也出来找工作.现在的招聘他们有时会给你出一套面试题或者智力 ...
- BATJ经典软件测试面试题目(内附答案)
Time will tell(时间会证明一切). 题目 一.单项选择题,共20小题 二.判断题,共10小题 三.填空题,共10小题20个空 四.名词解释,共5小题 五.简答题,共3小题 六.综合题 一 ...
最新文章
- 五步让你玩转CocoaPods
- selenium - 下拉框操作
- 在windows安装配置Git开发环境
- nagios 监控平台搭建
- 雅思8分大神叫你如何学习口语
- SQL语句大全(2)
- 教你用 3 台机器搞定一个 Redis 高可用架构
- ASP从HTML标签中提取中文
- vr降噪器英文是什么_耳机降噪功能这么多,说说什么是ANC、ENC、CV...
- o'Reill的SVG精髓(第二版)学习笔记——第四章
- glog学习(二):glog主要接口和类分析
- 统计数组中出现次数最多的元素并输出
- T3500通过PXE克隆报“Unable to Control A20 Line XMS Driver not installed”
- oracle和mysql建表语句的区别_mysql和oracle建表语句的区别
- Redis详细下载安装教程
- 关于74HC573使用
- HC05蓝牙模块与stm32通信
- socketTCP协程文件+信息传递 - TCP聊天文件服务器v1.9 - 划时代的版本更新(4.6万字)
- Python制作自己的第一人称射击游戏
- 偏导数(Partial Derivative)