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

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

✨今日算法一题



矩阵置0

题目描述

思路详解

本题的思路比较简单,我们采用两个数组进行标记行和列是否为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;
                }
            }
        }
    }
}

✨总结

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

经验分享 程序员 微信小程序 职场和发展