当前位置:   article > 正文

[华为OD]给定一个 N*M 矩阵,请先找出 M 个该矩阵中每列元素的最大值 100

[华为OD]给定一个 N*M 矩阵,请先找出 M 个该矩阵中每列元素的最大值 100

题目:

给定一个 N*M 矩阵,请先找出 M 个该矩阵中每列元素的最大值,然后输出这 M 个值中的

最小值

补充说明:

N 和 M 的取值范围均为:[0, 100]

示例 1

输入:

[[1,2],[3,4]]

输出:

3

说明:

第一列元素为:1 和 3,最大值为 3;

第二列元素为:2 和 4,最大值为 4

各列最大值 3 和 4 的最小值为 3

题解:

比较暴利的思路就是,直接创建二维数组,然后先按照列遍历找出最大的值放在一个List里面,最后找到这个List最小值就可以了

代码:

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. import java.util.stream.Collectors;
  5. public class MnMatrix {
  6. public static void main(String[] args) {
  7. Scanner sc = new Scanner(System.in);
  8. if (!sc.hasNextLine()) {
  9. return;
  10. }
  11. String matrixStr = sc.nextLine();
  12. String matrix = matrixStr.substring(2, matrixStr.length() - 2);
  13. String[] matrixArr = matrix.split("],\\[");
  14. int n = matrixArr.length;
  15. int m = matrixArr[0].split(",").length;
  16. int[][] intArr = new int[n][m];
  17. List<Integer> colList = new ArrayList<>();
  18. // 构造二维数组
  19. for (int i = 0; i < n; i++) {
  20. String[] matrixPos = matrixArr[i].split(",");
  21. for (int j = 0; j < m; j++) {
  22. intArr[i][j] = Integer.valueOf(matrixPos[j]);
  23. }
  24. }
  25. // 按照列遍历
  26. for (int j = 0; j < m; j++) {
  27. List<Integer> intList = new ArrayList<>();
  28. for (int i = 0; i < n; i++) {
  29. intList.add(intArr[i][j]);
  30. if (i == n - 1) {
  31. intList = intList.stream().sorted().collect(Collectors.toList());
  32. colList.add(intList.get(intList.size() - 1));
  33. }
  34. }
  35. }
  36. colList=colList.stream().sorted().collect(Collectors.toList());
  37. System.out.println(colList.get(0));
  38. }
  39. }

验证:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/506879
推荐阅读
相关标签
  

闽ICP备14008679号