给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

进阶:

一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。
一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
你能想出一个仅使用常量空间的解决方案吗?

示例 1:

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]

解题思路

将需要变为0的行列,直接标记在第一行和第一列上,但是因为如果matrix[0][0]的位置为零,可能存在3种可能1.第一行中就出现了0元素 2.第一列出现了0元素 3.matrix[0][0]为零,因此需要用两个boolean值表示前两种情况

代码

class Solution {public void setZeroes(int[][] matrix) {int n=matrix.length,m=matrix[0].length;boolean row=false,col=false;for (int j = 0; j < m; j++)if(matrix[0][j]==0)row=true;for (int j = 0; j < n; j++)if(matrix[j][0]==0)col=true;          for (int i = 1; i < n; i++) {for (int j = 1; j < m; j++) {if(matrix[i][j]==0){matrix[i][0]=0;matrix[0][j]=0;}}}for (int i = 1; i < n; i++) {if(matrix[i][0]==0)for (int j = 0; j < m; j++)matrix[i][j]=0;}for (int j = 1; j < m; j++)if(matrix[0][j]==0)for (int i = 0; i < n; i++)matrix[i][j]=0;if(row)for (int j = 0; j < m; j++)matrix[0][j]=0;if(col)for (int i = 0; i < n; i++)matrix[i][0]=0;}
}

leetcode 73. 矩阵置零相关推荐

  1. Java实现 LeetCode 73 矩阵置零

    73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ...

  2. LeetCode 73. 矩阵置零(两个标记变量)

    73. 矩阵置零 我们可以用矩阵的第一行和第一列作为两个标记数组,以达到 O(1)O(1) 的额外空间. 但这样会导致原数组的第一行和第一列被修改,无法记录它们是否原本包含 0.因此我们需要额外使用两 ...

  3. LeetCode 73矩阵置零74搜素二维矩阵75颜色分类

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  4. leetcode 73 矩阵置零 Python

    矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [[1,1,1],[1,0,1],[1,1,1] ] 输出: [ ...

  5. leetcode 73 矩阵置零 C++ 两种解法

    leetcode 73 两种解法~~,没有一个是我想出来的,哈哈~~ one class Solution {public:void setZeroes(vector<vector<int ...

  6. Leetcode算法Java全解答--73. 矩阵置零

    Leetcode算法Java全解答–73. 矩阵置零 文章目录 Leetcode算法Java全解答--73. 矩阵置零 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

  7. leetcode(js)-每日一练之 矩阵置零 题库编号 73

    leetcode(js)-每日一练之 矩阵置零 1.检查并标记第一行和第一列是否有0 (firstColHasZero和firstRowHasZero) 2.忽略第一行第一列,若其余行列含有0,将其所 ...

  8. C++矩阵置零---原地算法(附三种解法)

    如题只要发现一个元素为0,那么它所在的行和列都要置零. 方法一:使用两个数组只要发现某个元素为0,就将这一行或这一列的头元素置true,然后再遍历矩阵,只要某个元素对应的行或列头元素为true,那么对 ...

  9. 矩阵置零—leetcode73

    给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [[1,1,1],[1,0,1],[1,1,1] ] 输出: [[1,0, ...

最新文章

  1. Word文档如何自动生成文献摘要?
  2. MYSQL交通系统查询,城市公交查询系统的设计与实现(SSH,MySQL)(含录像)
  3. C++之Lambda表达式
  4. Ubuntu18.04安装rabbitmq
  5. 电脑开机速度慢?新手试试以下这几个小技巧!
  6. tkinter使用cefpython库_Python3.7 tkinter中嵌入网页(WebView),需要引入cefpython3
  7. go grpc压缩_跟我学 gRPC—1. gRPC 及相关介绍
  8. 对PostgreSQL xmin的深入学习
  9. windows 网络编程大汇总
  10. 购物网站,网上购物系统,网上商城系统毕业设计
  11. 介绍Google Code Playground
  12. [十大谬论]常见的逻辑谬误与批判方法
  13. html可以使用文本修饰标记定义,HTML标记功能详述-网站首页.ppt
  14. python链式函数_python 链式
  15. SpringBoot使用之yaml配置注入(推荐使用)
  16. 重构--Introduce Parameter Object
  17. Drupal 常用模块汇总
  18. 色彩搭配速成!3个实用方法帮你全面搞定配色
  19. 跟领导谈加薪,聪明的员工都这么说
  20. Dagger2使用详解

热门文章

  1. Makefile(三)
  2. 文件操作(stat)
  3. java基础入门答案谭晓芳,原理+实战讲解
  4. Java面试题及答案,mysql可视化工具
  5. 腾讯,字节等大厂面试真题汇总,深夜思考
  6. Java中key可以重复的Map集合:IdentityHashMap
  7. 基于JavaConfig配置的Spring MVC的构建
  8. Python 新浪微博 各种表情使用频率
  9. 运行caffe自带的mnist实例详细教
  10. 启用了不安全的HTTP方法