【算法刷题】—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; } } } } }
✨总结
本题还有其他的标记方法,比如使用两个标记变量、使用一个标记变量…就不再列出了。矩阵也是一个基本的数据结构,也需要多多练习熟悉其中的相关操作,加油!!!