zoukankan      html  css  js  c++  java
  • 零矩阵

    此博客链接:

    零矩阵

    题目链接:https://leetcode-cn.com/leetbook/read/array-and-string/ciekh/

    题目

    编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。

    示例 1:

    输入:
    [
    [1,1,1],
    [1,0,1],
    [1,1,1]
    ]
    输出:
    [
    [1,0,1],
    [0,0,0],
    [1,0,1]
    ]
    示例 2:

    输入:
    [
    [0,1,2,0],
    [3,4,5,2],
    [1,3,1,5]
    ]
    输出:
    [
    [0,0,0,0],
    [0,4,5,0],
    [0,3,1,0]
    ]

    题解

    先求出矩阵的行数,遍历矩阵,当遍历到0时,把行和列都置为0,这里需要重新定义一个变量,从0开始把0所在的行和列置0用的。这里有个问题就是被置为0的会被重新认为是0,会把置为0的行和列再次置为0。这里我设置了一个标志位,对原来数组中的0设置标志,如果是原来数组中的0后面才把行和列都置为0.

    代码

    class Solution {
        public void setZeroes(int[][] matrix) {
         int row=matrix.length;
         int col=matrix[0].length;
         int h=0;
         int l=0;
         int flag[][]=new int [row][col];
         for(int i=0;i<row;i++){
             for(int j=0;j<col;j++){
                 if(matrix[i][j]==0){
                     flag[i][j]=0;
                 }
                 else{
                     flag[i][j]=1;
                 }
             }
         }
         for(int i=0;i<row;i++)
         {
             for(int j=0;j<col;j++){
                 if(matrix[i][j]==0&&flag[i][j]==0){
                     h=0;
                     l=0;
                     while(h<row){
                          matrix[h][j]=0;
                          h++;
                     }
                       while(l<col){
                          matrix[i][l]=0;
                          l++;
                       }
                 }
             }
         }
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    js 变量的声明能提升 初始化不会提升
    老公教我写分页
    响应式布局
    闭包优缺点
    正则表达式验证邮箱格式
    DDL表和库管理语言
    DML数据库操作语言
    python实现求第K小
    硬币凑数
    MySQL学习的表单定义
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14888742.html
Copyright © 2011-2022 走看看