qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

用Java写一个算法:输入一个二维数组(矩阵),找出矩阵中所有零元素所在的行和列,并将这些行、列上面的其他元素都修改为0

时间2023-08-10 14:52:52 提问来自 美国 的网友 分类创作 浏览271
以下是用Java编写的算法,实现了输入一个二维数组,找出矩阵中所有零元素所在的行和列,并将这些行、列上的其他元素都修改为0: ```java public class ZeroMatrix { public static void main(String[] args) { int[][] matrix = { {1, 2, 3}, {4, 0, 6}, {7, 8, 9} }; System.out.println("原始矩阵:"); printMatrix(matrix); setZeroes(matrix); System.out.println("修改后的矩阵:"); printMatrix(matrix); } public static void setZeroes(int[][] matrix) { int rows = matrix.length; int cols = matrix[0].length; boolean[] zeroRows = new boolean[rows]; boolean[] zeroCols = new boolean[cols]; // 找出所有零元素所在的行和列 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (matrix[i][j] == 0) { zeroRows[i] = true; zeroCols[j] = true; } } } // 将对应行上的元素修改为0 for (int i = 0; i < rows; i++) { if (zeroRows[i]) { for (int j = 0; j < cols; j++) { matrix[i][j] = 0; } } } // 将对应列上的元素修改为0 for (int j = 0; j < cols; j++) { if (zeroCols[j]) { for (int i = 0; i < rows; i++) { matrix[i][j] = 0; } } } } public static void printMatrix(int[][] matrix) { for (int[] row : matrix) { for (int num : row) { System.out.print(num + " "); } System.out.println(); } System.out.println(); } } ``` 这个算法首先创建了两个布尔数组 `zeroRows` 和 `zeroCols`,用于记录矩阵中零元素所在的行和列。然后,通过遍历整个矩阵,找出所有零元素的位置,并将对应的 `zeroRows` 和 `zeroCols` 的元素设为 `true`。接下来,再次遍历矩阵,将对应行和列上的元素修改为0。最后,通过调用 `printMatrix` 方法打印修改后的矩阵。 希望这个算法能满足你的需求。如果有任何问题,请随时提问。

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 Java算法:丑数 下一篇 作为一名新时代青年大学生,我们能够为经济社会发展绿色转型做些什么