一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github

欢迎大家关注我的新浪微博,我的新浪微博

欢迎转载,转载请注明出处

(一)题目

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

(二)解题

题目大意:给定一个M*N的数组,如果(i,j)为0,则将第i行第j列全部元素置为0。

这道题目意思很简单,如果考虑到用辅助空间来计算就超级简单了,本题不允许用辅助空间!

那么,我们换个思路,利用矩阵自身来存储需要修改的信息。

这里我们考虑将需要修改的行列信息存储在第0行和第0列。具体见代码:

  1. class Solution {
  2. public:
  3. void setZeroes(vector<vector<int>>& matrix) {
  4. int row = matrix.size();
  5. if(row==0) return;
  6. int col = matrix[0].size();
  7. int R0flag = false;//记录第0行是否存在0
  8. int C0flag = false;//记录第0列是否存在0
  9. for(int i = 0 ; i< row ; i++)
  10. {
  11. if(matrix[i][0]==0) {C0flag=true;break;}//扫描第0列
  12. }
  13. for(int i = 0 ; i< col ; i++)
  14. {
  15. if(matrix[0][i]==0) {R0flag=true;break;}//扫描第0行
  16. }
  17. //扫描整个数组,用matrix[i][0]保存需要修改的列, matrix[0][j]保存需要修改的行
  18. for(int i = 0 ; i < row ;i++)
  19. {
  20. for(int j = 0 ; j < col ; j++)
  21. {
  22. if(matrix[i][j] == 0)
  23. {
  24. matrix[i][0] = 0;
  25. matrix[0][j] = 0;
  26. }
  27. }
  28. }
  29. //修改1~col-1列
  30. for(int i = 1 ; i< row ; i++)
  31. {
  32. if(matrix[i][0]==0){
  33. for(int j = 0 ; j< col ; j++)
  34. {
  35. matrix[i][j]=0;
  36. }
  37. }
  38. }
  39. //修改1~row-1行
  40. for(int i = 1 ; i< col ; i++)
  41. {
  42. if(matrix[0][i]==0){
  43. for(int j = 0 ; j< row ; j++)
  44. {
  45. matrix[j][i]=0;
  46. }
  47. }
  48. }
  49. //修改第0行和第0列
  50. if(R0flag){
  51. for(int i = 0 ; i < col ; i++) matrix[0][i] =0;
  52. }
  53. if(C0flag){
  54. for(int i = 0 ; i < row ; i++) matrix[i][0] =0;
  55. }
  56. }
  57. };

【一天一道LeetCode】#73. Set Matrix Zeroes的更多相关文章

  1. [LeetCode] 73. Set Matrix Zeroes 矩阵赋零

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

  2. Leetcode#73 Set Matrix Zeroes

    原题地址 用矩形的第一行和第一列充当mask 代码: void setZeroes(vector<vector<int> > &matrix) { ].empty()) ...

  3. [LeetCode] 73. Set Matrix Zeroes 解题思路

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

  4. leetcode[73] Set Matrix Zeroes 将矩阵置零

    给定一个矩阵,把零值所在的行和列都置为零.例如: 1 2 3 1 3 1 1 1 操作之后变为 1 3 0 0 0 1 1 方法1: 赋值另存一个m*n的矩阵,在原矩阵为零的值相应置新的矩阵行和列为零 ...

  5. 【LeetCode】73. Set Matrix Zeroes (2 solutions)

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

  6. 【LeetCode】-- 73. Set Matrix Zeroes

    问题描述:将二维数组中值为0的元素,所在行或者列全set为0:https://leetcode.com/problems/set-matrix-zeroes/ 问题分析:题中要求用 constant ...

  7. 【LeetCode】73. Set Matrix Zeroes 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 原地操作 新建数组 队列 日期 题目地址:https ...

  8. LeetCode OJ 73. Set Matrix Zeroes

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

  9. 【LeetCode】73. Set Matrix Zeroes

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fo ...

随机推荐

  1. Eclipse创建Maven工程

    Eclipse创建Maven工程: Eclipse: New  -> Other -> Maven Project -> Next -> webapp -> Finish ...

  2. 阻止Enter键回发到服务端Asp.net

    //阻止enter键回发到服务端$(function () {    $("input[type=text]").each(function () {        $(this) ...

  3. k8s Kubernetes v1.10

    #转移页面 http://www.cnblogs.com/elvi/p/8976305.html

  4. 疯狂的Django 之深度外键跨表查找之疯狂INNER JOIN

    定义Model: from django.db import models class Moreinfo(models.Model): weight = models.FloatField() hei ...

  5. md编辑器测试

    markdown 这是一个代码 print

  6. android MultiDex multidex原理下超出方法数的限制问题(三)

    android MultiDex 原理下超出方法数的限制问题(三)    插件化?自动化?multiDex?是不是觉得已经懵逼了?请先看这篇文章的内容,在下篇文章中将会详解具体的过程- 随着应用不断迭 ...

  7. Android输入事件详解

    输入事件 在 Android 系统中,从用户与应用的交互中截获事件的方法不止一种.如考虑截获用户界面内的事件,则可从用户与之交互的特定视图对象中捕获事件. 为此,View 类提供了多种方法. 在您将用 ...

  8. tolua++没法用

    tolua++没法用(金庆的专栏)觉得从C++头文件生成lua绑定代码的方法比较简单,想试试tolua++.从Github获取toluapp:https://github.com/LuaDist/to ...

  9. 理解性能的奥秘——应用程序中慢,SSMS中快(6)——SQL Server如何编译动态SQL

    本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(5)--案例:如何应对参数嗅探 我们抛开参数嗅探的话题,回到了本系列的最 ...

  10. html5全解析

    htm是软件开发中非常基础的知识,也是很重要的知识,在web中是很重要的知识点,在此梳理一下主要内容: 1.HTML是什么? 全称为HyperText Markup Language,超文本标记语言, ...