企业网站站内优化,凡科网官网登录入口,室内装潢装修学校,推广之家邀请码矩阵置零
题目:
给定一个 m x n 的矩阵#xff0c;如果一个元素为 0 #xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1#xff1a;
输入#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]]
输出#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2#…矩阵置零
题目:
给定一个 m x n 的矩阵如果一个元素为 0 则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1
输入matrix [[1,1,1],[1,0,1],[1,1,1]]
输出[[1,0,1],[0,0,0],[1,0,1]]示例 2
输入matrix [[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, matrix[0][0] 需要特殊处理, 分别遍历第一行和第一列判断是第一行的元素中包含 0 还是第一列的元素中包含 0
class Solution {public void setZeroes(int[][] matrix) {int m matrix.length;int n matrix[0].length;boolean isRow false;boolean isCol false;for(int i 0; i m; i) {if(matrix[i][0] 0) {isRow true;break ;}}for(int i 0; i n; i) {if(matrix[0][i] 0) {isCol true;break ;}}for(int i 0; i m; i) {for(int j 0; j n; j) {if(matrix[i][j] 0) {matrix[i][0] 0;matrix[0][j] 0;}}}for(int i 1; i m; i) {if(matrix[i][0] 0) {for(int j 1; j n; j) {matrix[i][j] 0;}}}for(int i 1; i n; i) {if(matrix[0][i] 0) {for(int j 1; j m; j) {matrix[j][i] 0;}}}if(isRow) {for(int i 0; i m; i) {matrix[i][0] 0;}}if(isCol) {for(int i 0; i n; i) {matrix[0][i] 0;}}}
}