赞
踩
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
matrix = [[1,1,1],[1,0,1],[1,1,1]]
[[1,0,1],[0,0,0],[1,0,1]]
import java.util.Arrays; //矩阵置零 public class Main{ public static void main(String[] args) { //案例 int[][] matrix = new int[][]{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}; setZeroes(matrix);//[[1, 0, 1],[0, 0, 0],[1, 0, 1]] } public static void setZeroes(int[][] matrix) { //行数 int m = matrix.length; //列数 int n = matrix[0].length; //临时数组 int[][] temp = new int[m][n]; //标记临时数组 for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { if (matrix[i][j] == 0) { for (int k = 0; k < m; k++) { //所在一列标记 temp[k][j] = 1; } for (int k = 0; k < n; k++) { //所在一行标记 temp[i][k] = 1; } } } } //根据临时数组 置零矩阵 for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { if (temp[i][j] == 1) { matrix[i][j] = 0; } } } //输出:每一行 System.out.print("["); for (int i = 0; i < matrix.length; i++) { if (i < matrix[i].length - 1) { System.out.print(Arrays.toString(matrix[i]) + ","); } else { //除最后一行后面 不需要接逗号 System.out.print(Arrays.toString(matrix[i])); } } System.out.print("]"); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。