赞
踩
题目:
给定一个 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最小值就可以了
代码:
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- import java.util.stream.Collectors;
-
- public class MnMatrix {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- if (!sc.hasNextLine()) {
- return;
- }
-
- String matrixStr = sc.nextLine();
- String matrix = matrixStr.substring(2, matrixStr.length() - 2);
-
- String[] matrixArr = matrix.split("],\\[");
- int n = matrixArr.length;
- int m = matrixArr[0].split(",").length;
- int[][] intArr = new int[n][m];
-
- List<Integer> colList = new ArrayList<>();
-
- // 构造二维数组
- for (int i = 0; i < n; i++) {
- String[] matrixPos = matrixArr[i].split(",");
- for (int j = 0; j < m; j++) {
- intArr[i][j] = Integer.valueOf(matrixPos[j]);
- }
- }
-
- // 按照列遍历
- for (int j = 0; j < m; j++) {
- List<Integer> intList = new ArrayList<>();
- for (int i = 0; i < n; i++) {
- intList.add(intArr[i][j]);
- if (i == n - 1) {
- intList = intList.stream().sorted().collect(Collectors.toList());
- colList.add(intList.get(intList.size() - 1));
- }
- }
- }
- colList=colList.stream().sorted().collect(Collectors.toList());
- System.out.println(colList.get(0));
- }
- }

验证:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。