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 ...
随机推荐
- 数据库5.7-jdbc版本8.0.12驱动连接
现在版本的jdbc连接方式和原来不一样了, 假如你使用String driver = "com.mysql.jdbc.Driver"; 会抛出错误: Loading class ` ...
- HTML学习日记之元信息meta标记
所谓meta标记就是用来描述一个HTML网页文档的属性,也称为元信息,这些信息并不会显示在浏览器的页面中,例如作者.日期和时间.网页描述.页面刷新等. 基本语法: <meta name = &q ...
- python--模块之sys与python解释器交互模块
作用:sys模块是与python解释器交互的一个接口.它提供了一系列有关python运行环境的变量和函数. 常用函数:import sys sys.argv #命令行参数list,第一个元素是程序本身 ...
- Django图书管理系统(单表操作)
以下内容需要掌握: Python3 以及前端:HTML,CSS,jQuery,BootStrap,Django,JavaScript 开启Django新项目: 1,settings.py 数据库选择: ...
- gsl 复数
一.复数的表示 复数的两种表示: gsl复数结构的声明和部分宏在gsl_complex.h中,方法的声明和另一部分宏在gsl_complex_math.h.复数的表示(结构)有三种,即float型.d ...
- 15-oauth2+oidc实现Server部分
1-我们使用之前项目的mvcCookieAuthSampe2进行改造 1.1 增加IdentityServer4 2-增加Config.cs文件,对IdentityServer提供相关的配置数据 u ...
- 为什么我要放弃javaScript数据结构与算法(第十一章)—— 算法模式
本章将会学习递归.动态规划和贪心算法. 第十一章 算法模式 递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题.递归通常涉及函数调用自身. 递归函数是像下面能够直接调用自身的 ...
- HDL代码风格建议(1)使用示例和IP
Recommended HDL Coding Styles HDL coding styles can have a significant effect on the quality of resu ...
- 全国Uber优步司机奖励政策 (1月25日-1月31日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 苏州Uber优步司机奖励政策(12月28日到1月3日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...