博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.7 将一个MxN矩阵所有为0的元素所在行和列全部置0
阅读量:5024 次
发布时间:2019-06-12

本文共 1069 字,大约阅读时间需要 3 分钟。

(这个题目让我想到泡泡堂这个游戏,呵呵!)

解题思路:一开始想的是边遍历,边设置行和列为0并标记.这个方法的错误之处在于:这个过程会导致你无法找到所在行列的其它为0的元素。

所以,只能先遍历矩阵,找出所有的0元素所在的行和列,并记录下来。

之后,可以通过两种方式更新矩阵A,

1、通过遍历所有存在0元素的行、列,并置矩阵A中该行、列为0;时间复杂度为M×i+N×j(i,j为存在0的行和列个数)

2、再次遍历矩阵A,并判断A[i][j]的下标i或j是否在之前记录下来的存在0的行或列中,时间复杂度为M×N;

 

这是第一种更新矩阵解法

#include
#include
#include
#include
using namespace std;void set0(vector
> arr){ set
raw_set,col_set; for (int i=0;i
::iterator set_iter; vector
::iterator vec_iter; vector
>::iterator vec2_iter; for (set_iter=raw_set.begin();set_iter !=raw_set.end();set_iter++) for (vec_iter=arr[*set_iter].begin();vec_iter !=arr[*set_iter].end();vec_iter++) *vec_iter=0; for (vec2_iter=arr.begin();vec2_iter !=arr.end();vec2_iter++) for (set_iter=col_set.begin();set_iter!=col_set.end();set_iter++) (*vec2_iter)[*set_iter]=0; for (int i=0;i
>n>>m; vector
> arr(n); for (int i=0;i
>x; arr[i].push_back(x); } set0(arr);}

 

转载于:https://www.cnblogs.com/xiaolongren2012/archive/2013/01/07/2850217.html

你可能感兴趣的文章
Docker 生态
查看>>
Spring整合jdbc-jdbc模板api详解
查看>>
Tomcat:Can't load AMD 64-bit .dll on a IA 32 platform(问题记录)
查看>>
JAVA 集合JGL
查看>>
Python创建删除文件
查看>>
最全的分区类型及详解
查看>>
Python 类中__init__()方法中的形参与如何修改类中属性的值
查看>>
9.1.3 前端 - HTML body标签 - 文本样式
查看>>
ACID属性
查看>>
cnpm不是内部命令的解决方案:配置环境变量
查看>>
7系列FPGA远程更新方案-QuickBoot(转)
查看>>
导出帐号和权限脚本
查看>>
markdown公式编辑参考
查看>>
利用运行时给模型赋值
查看>>
归并排序求逆序对
查看>>
SQL2008用sql语句给字段添加说明
查看>>
JavaScript的对象创建
查看>>
树形DP(统计直径的条数 HDU3534)
查看>>
python学习之路(25)
查看>>
c++中拷贝构造函数、默认无参构造函数、析构函数的理解
查看>>