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 编程语言查找矩阵中每行最大元素的不同方法。

更新于: 2023 年 5 月 4 日

2K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告