博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-73-Set Matrix Zeroes
阅读量:5875 次
发布时间:2019-06-19

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

算法描述:

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it .

Example 1:

Input: [  [1,1,1],  [1,0,1],  [1,1,1]]Output: [  [1,0,1],  [0,0,0],  [1,0,1]]

Example 2:

Input: [  [0,1,2,0],  [3,4,5,2],  [1,3,1,5]]Output: [  [0,0,0,0],  [0,4,5,0],  [0,3,1,0]]

Follow up:

  • A straight forward solution using O(mn) space is probably a bad idea.
  • A simple improvement uses O(m + n) space, but still not the best solution.
  • Could you devise a constant space solution?

解题思路:将矩阵的首行和首列用于标记该行或该列中有0元素。而首行和首列则需要单独的标记位标记该行或者列中有0元素存在。

void setZeroes(vector
>& matrix) { int m = matrix.size(); int n = matrix[0].size(); bool row = false; bool col = false; for(int i=0; i < m; i++) if(matrix[i][0]==0) row = true; for(int j=0; j < n; j++) if(matrix[0][j]==0) col = true; for(int i=1; i < m; i++){ for(int j=1; j < n; j++){ if(matrix[i][j]==0){ matrix[i][0]=0; matrix[0][j]=0; } } } for(int i = 1; i < m; i++){ for(int j =1; j < n; j++){ if(matrix[i][0]==0 || matrix[0][j]==0){ matrix[i][j]=0; } } } if(row) for(int i=0; i < m; i++) matrix[i][0]=0; if(col) for(int i=0; i < n; i++) matrix[0][i]=0; }

 

转载于:https://www.cnblogs.com/nobodywang/p/10343946.html

你可能感兴趣的文章
常用线缆用量计算公式大汇总
查看>>
云服务器 ECS 配置:利用MySQL读写分离,提升应用数据吞吐性能
查看>>
如何做到“恰好一次”地传递数十亿条消息
查看>>
倒排索引创建案例
查看>>
Firewalld的概念与使用
查看>>
React项目技术栈
查看>>
项目线程安全
查看>>
ElementUI Table组件,如何在多页数据下勾选多行
查看>>
什么是Scala Scala如何学习和入门之我的个人学习经验以及相关实战
查看>>
elemetui中好用的小技巧
查看>>
Android Binder的使用
查看>>
Cocos2dx源码记录(8) CCMaterial, CCTechnique,CCPass
查看>>
springmvc+mybatis+restful+webservice 分布式架构
查看>>
Oracle 面试题总结
查看>>
Flutter RichText支持图片显示和自定义图片效果
查看>>
微软开发人工智能系统 在吃豆人游戏中获满分
查看>>
Mint UI loadmore禁止下拉
查看>>
Vue下拉刷新组件
查看>>
python机器学习实战(四)
查看>>
智能合约的一种设计结构
查看>>