lintcode-162-矩阵归零
162-矩阵归零
给定一个m×n矩阵,如果一个元素是0,则将其所在行和列全部元素变成0。
需要在原矩阵上完成操作。样例
给出一个矩阵
[
[1, 2],
[0, 3]
]
返回
[
[0, 2],
[0, 0]
]挑战
你是否使用了额外的空间?
- 一个直接的解决方案是使用 O(MN) 的额外空间,但这并不是一个好的方案。
- 一个简单的改进方案是使用 O(M + N) 的额外空间,但这仍然不是最好的解决方案。
你能想出一个常数空间的解决方案吗?
标签
Cracking The Coding Interview 矩阵
思路
若点 (i , j) 为0,则可以把 (i , 0) ,(0 , j) 标记为 0,最后根据该标记把列和行设置为 0,这样的设置会影响第 1 行和第 1 列,所以要先判断第 1 行和第 1 列是否包含 0,若包含 0,单独置第 1 行或第 1 列为0。
code
class Solution {
public:
/*
* @param matrix: An integer
* @return:
*/
void setZeroes(vector<vector<int>>& matrix) {
// write your code here
int sizeRow = matrix.size();
if (sizeRow <= 0) {
return;
}
int sizeCol = matrix[0].size(), i = 0, j = 0;
bool firRow = false, firCol = false;
// 检测第 1 行是否含0
for (i = 0; i < sizeCol; i++) {
if (matrix[0][i] == 0) {
firRow = true;
break;
}
}
// 检测第 1 列是否含0
for (i = 0; i < sizeRow; i++) {
if (matrix[i][0] == 0) {
firCol = true;
break;
}
}
// 若点 (i , j) 为0,则可以把 (i , 0) ,(0 , j) 标记为 0
for (i = 1; i < sizeRow; i++) {
for (j = 1; j < sizeCol; j++) {
if (matrix[i][j] == 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
// 根据 (i , 0) ,(0 , j) 的值,单独设置某行或某列为 0
for (i = 1; i < sizeCol; i++) {
if (matrix[0][i] == 0) {
for (j = 1; j < sizeRow; j++) {
matrix[j][i] = 0;
}
}
}
for (i = 1; i < sizeRow; i++) {
if (matrix[i][0] == 0) {
for (j = 1; j < sizeCol; j++) {
matrix[i][j] = 0;
}
}
}
// 第 1 行包含 0,置第 1 行全为 0
if (firRow == true) {
for (j = 0; j < sizeCol; j++) {
matrix[0][j] = 0;
}
}
// 第 1 列包含 0,置第 1 列全为 0
if (firCol == true) {
for (j = 0; j < sizeRow; j++) {
matrix[j][0] = 0;
}
}
}
};
lintcode-162-矩阵归零的更多相关文章
- OpenJudge计算概论-矩阵归零消减序列和
矩阵归零消减序列和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个n*n的矩阵( <= n <= ,元素的值都是非负整数).通过n-1次实施下述过程,可把这个矩阵转 ...
- 投入OJ的怀抱~~~~~~~~~~
OpenJudge C20182024 信箱(1) 账号 修改设定 退出小组 管理员 frank 林舒 Dzx someone 李文新 公告 11-05 程序设计与算法(大学先修课) 成员(61910 ...
- noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T01——T10
T01 矩阵交换行 描述 给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果. 输入 输入共6行,前5行为矩阵的每一行元素,元 ...
- NumPy-矩阵部分
NumPy-矩阵部分 [TOC] NumPy 简介 numpy可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多. 安装NumPy pi ...
- 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
真正掌握一种算法,最实际的方法,完全手写出来. LSTM(Long Short Tem Memory)特殊递归神经网络,神经元保存历史记忆,解决自然语言处理统计方法只能考虑最近n个词语而忽略更久前词语 ...
- lintcode-185-矩阵的之字型遍历
185-矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 对于如下矩阵: [ [1, 2, 3, 4], [5, 6, 7, 8], [9 ...
- lintcode:Matrix Zigzag Traversal 矩阵的之字型遍历
题目: 矩阵的之字型遍历 给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历. 样例 对于如下矩阵: [ [1, 2, 3, 4], [5, 6, 7, 8], [9 ...
- lintcode:搜索二维矩阵II
题目 搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没 ...
- lintcode :搜索二维矩阵
题目: 搜索二维矩阵 写出一个高效的算法来搜索 m × n矩阵中的值. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每行的第一个数大于上一行的最后一个整数. 样例 考虑下列矩阵: [ [1 ...
- (二分查找 拓展) leetcode 162. Find Peak Element && lintcode 75. Find Peak Element
A peak element is an element that is greater than its neighbors. Given an input array nums, where nu ...
随机推荐
- HTML5之特效
2D转换 在二维的平面上做一些变化,使用transform属性 1. 2D转换之移动(translate) 案例: div{ width: 200px; height: 200px; backgrou ...
- django使用pycharm为项目选择虚拟环境-3.1
使用pycharm打开项目 选择右上角的 file - settings - project - project interpreter 选择左上的设置符号,选择 Add 选择红框部分,然后选择之前创 ...
- 5 Ways to Prevent the 300ms Click Delay on Mobile Devices
http://www.sitepoint.com/5-ways-prevent-300ms-click-delay-mobile-devices/
- Nginx初体验(一):nginx介绍
今天我们来介绍一下Nginx. Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 特点: 反向代理,负载均衡,动静分离 首先我们来介绍一下正向代理服务器 ...
- Android Dagger2.0 学习一下
0.前言 个人感觉通过项目学习一些牛逼的框架,效果挺不错的. 1.个人理解 一直觉得Dagger2比较高大上,网上看了很多资料,很多,没有感觉. 然后怀疑智商问题,然后放弃了. 最后因为要做一个项目, ...
- GoF设计模式
GOF23种设计模式简介 GoF(“四人帮”,指Gamma, Helm, Johnson & Vlissides, Addison-Wesley四人)提出的23种设计模式可谓经典,由于其定义比 ...
- 基于Kafka的服务端用户行为日志采集
本文来自网易云社区 作者:李勇 背景 随着互联网的不断发展,用户所产生的行为数据被越来越多的网站重视,那么什么是用户行为呢?所谓的用户行为主要由五种元素组成:时间.地点.人物.行为.行为对应的内容.为 ...
- Unity Container中的几种注册方式与示例
1.实例注册 最简单的注册方式就是实例注册,Unity 容器负责维护对一个类型的单例引用,比如: 有如下的实际类型: namespace ConsoleSample { public class Sa ...
- android学习十 ActionBar
1.api level大于等于11 支持,或者使用兼容库,但兼容库的问题很多. 2.一个操作栏属于一个活动,并具有其生命周期 3.操作栏分3类:a.选项卡操作栏,b.列表操作栏,c.标准操作栏 4.获 ...
- WPF & EF & Prism useful links
Prism Attributes for MEF https://msdn.microsoft.com/en-us/library/ee155691%28v=vs.110%29.aspx Generi ...