【算法刷题】—7.21带你了解矩阵,矩阵置零

  • ‍♂️个人主页:杯咖啡
  • 进步是今天的活动,明天的保证!
  • ✨目前正在学习:SSM框架,算法刷题
  • 牛客网,刷算法过面试的神级网站,用牛客你也牛。 免费注册和我一起学习刷题
  • 希望大家多多支持一起进步呀!
  • When a man’s appearance is so incompatible with his soul, it is very distressing.
    当人的外表和他的灵魂如此不想称,那是很苦恼的事情。-《月亮与六便士》

✨今日算法一题

矩阵置0


文章目录

  • ✨今日算法一题
  • 矩阵置0
    • 题目描述
    • 思路详解
    • 代码与结果
  • ✨总结


矩阵置0

题目描述

【算法刷题】—7.21带你了解矩阵,矩阵置零_第1张图片
在这里插入图片描述

思路详解

本题的思路比较简单,我们采用两个数组进行标记行和列是否为0。我们只需要遍历一遍数组记录是否为0,如果为0就把行和列数组对应的设置为true,之后再遍历一遍数组,若行和列标记数组有一个为0就把该位置设置为0.

代码与结果

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

【算法刷题】—7.21带你了解矩阵,矩阵置零_第2张图片


✨总结

本题还有其他的标记方法,比如使用两个标记变量、使用一个标记变量…就不再列出了。矩阵也是一个基本的数据结构,也需要多多练习熟悉其中的相关操作,加油!!!

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

你可能感兴趣的:(算法刷题,算法,矩阵,线性代数,leetcode,java)