Java 中查找矩阵每行的最大元素
在 Java 中,数组是一个对象。它是一种非基本数据类型,用于存储相同数据类型的值。Java 中的矩阵只不过是一个多维数组,它表示多行多列。
这里我们给出了一个包含一组元素的矩阵,根据问题陈述,我们必须找出该矩阵中每行的最大元素。
让我们深入研究本文,了解如何使用 Java 编程语言来实现它。
为您展示一些实例
实例 1
给定矩阵 =
21 22 23 24 25 26 27 28 29
每行的最大元素:23、26 和 29
实例 2
给定矩阵 =
121 222 243 432 124 245 256 657 237 258 229 345 176 453 756 343
每行的最大元素:432、657、345 和 756
实例 3
给定矩阵 =
1 2 3 4 5 6 7 8 9
每行的最大元素:3、6 和 9
算法
算法 1:(使用 for 循环)
步骤 1 - 使用两个嵌套的 for 循环遍历矩阵并在每行中找到最大元素。
步骤 2 - 外部循环遍历矩阵的每一行,而内部循环遍历该行中的每个元素。
步骤 3 - 使用 Math.max 方法找到行中的最大元素,该方法返回两个值中较大的一个。
步骤 4 - 结果存储在一个数组中,并在最后返回。
算法 2:(使用 Java 流)
步骤 1 - 使用 Java 的流 API 查找每行的最大元素。
步骤 2 - IntStream.range 方法用于创建从 0 到矩阵行数的整数流。
步骤 3 - map 方法用于将函数 IntStream.of(matrix[i]).max().getAsInt() 应用于流中的每个整数。
步骤 4 - 此函数将行 matrix[i] 中的最大元素作为整数返回。
步骤 5 - 结果存储在一个数组中,并在最后返回。
语法
Java 中的 Matrix.length() 方法返回给定矩阵的长度。
下面指的是它的语法 -
inputMatrix.lenght
其中,“inputMatrix”指的是给定的矩阵。
IntStream.range() 是 Java 中的一种方法,它生成从 startInclusive 到 endExclusive - 1 的顺序整数流。
IntStream.range(startInclusive, endExclusive)
它可用于对一组整数执行操作。例如,在第二个代码中,它用于循环遍历矩阵的行和列。
多种方法
我们以不同的方法提供了解决方案。
使用 for 循环
使用 Stream 方法
让我们逐一查看程序及其输出。
方法 1:使用嵌套 for 循环
在这种方法中,矩阵元素将在程序中初始化。然后通过将矩阵作为参数传递给用户定义的方法,并在方法内部根据算法使用 for 循环查找该矩阵中每行的最大元素。
示例
import java.util.Arrays; public class Main { public static void main(String[] args) { int[][] inputMatrix = {{12, 12, 3}, {74, 65, 64}, {57, 28, 49}}; System.out.println("Max element in each row: "); int[] result = maxInEachRow(inputMatrix); System.out.println(Arrays.toString(result)); } // Method to find the maximum element in each row of the matrix public static int[] maxInEachRow(int[][] mat) { // Array to store the result int[] result = new int[mat.length]; // Outer loop to iterate through each row of the matrix for (int i = 0; i < mat.length; i++) { // Initialize max to the minimum value of int int max = Integer.MIN_VALUE; // Inner loop to iterate through each element in the row for (int j = 0; j < mat[i].length; j++) { // Update max with the maximum of the current value and the next element max = Math.max(max, mat[i][j]); } // Store the result in the array result[i] = max; } return result; } }
输出
Max element in each row: [12, 74, 57]
方法 2:使用 Stream 方法
在这种方法中,矩阵元素将在程序中初始化。然后通过将矩阵作为参数传递给用户定义的方法,并在方法内部根据算法使用流方法查找该矩阵中每行的最大元素。
示例
import java.util.Arrays; import java.util.stream.IntStream; public class Main { public static void main(String[] args) { int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; System.out.println("Max element in each row: "); int[] result = maxInEachRow(matrix); System.out.println(Arrays.toString(result)); } // Method to find the maximum element in each row of the matrix using streams public static int[] maxInEachRow(int[][] matrix){ return IntStream.range(0, matrix.length) // Get the maximum element in the row .map(i -> IntStream.of(matrix[i]).max().getAsInt()) // Convert the stream to an array .toArray(); } }
输出
Max element in each row: [3, 6, 9]
在本文中,我们探讨了使用 Java 编程语言查找矩阵中每行最大元素的不同方法。