华为OD机试真题 Java 实现【矩阵元素的边界值】【2023 B卷 100分】,附详细解题思路-LMLPHP

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

  • 专栏福利:限时订阅49.9,订阅后可加入华为OD刷题群,获得哪吒优先答疑机会(华为OD刷题指导,远程代码调试),群里大佬众多可以抱团取暖,群友刷题经验分享,考试经验分享。

华为OD机试真题 Java 实现【矩阵元素的边界值】【2023 B卷 100分】,附详细解题思路-LMLPHP

一、题目描述

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

二、输入描述

第一行输入两个数,分别为M和N。

接下来M行输入为矩阵的成员,每行N个成员,矩阵成员都是整数,范围-32768~32767。

三、输出描述

先找出M个该矩阵中每列元素的最大值,然后输出这M个值中的最小值。

四、解题思路

当你刷过下面这道题的时候,你就会发现本题【矩阵元素的边界值】简直就是白给的。

华为OD机试真题 Java 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

这就是多刷题的好处,遇到类似的,是真的爽。完美解答本题,我只需要三分钟

下面分享一下我的解题思路:

  1. 第一行输入两个数,M行和N列;
  2. 然后输入,M行N列的矩阵;
  3. 定义一个二维数组colArr,(行是列,列是行的倒矩阵);
  4. 将数据加入到倒矩阵;
  5. 遍历倒矩阵colArr;
  6. 先找出每一列的最大值;
  7. 再找出每列最大值中的最小值;

五、Java算法源码

/**
 * 先找出M个该矩阵中每列元素的最大值,然后输出这M个值中的最小值。
 */
public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    // 行的数量
    int M = sc.nextInt();
    // 列的数量
    int N = sc.nextInt();
    // 倒矩阵(行是列,列是行)
    int[][] colArr = new int[N][M];

    // 将数据加入到倒矩阵
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < N; j++) {
            int n = sc.nextInt();
            colArr[j][i] = n;
        }
    }

    // 每一列的最大值中的最小值
    int min = 32767;
    // 行数M,列数N
    for (int i = 0; i < N; i++) {
        int colMax = -32768;
        for (int j = 0; j < M; j++) {
            System.out.println(colArr[i][j]);
            if (colArr[i][j] > colMax) {
                colMax = colArr[i][j];
            }
        }
        System.out.println("第"+(i+1)+"列的最大值:" + colMax);
        if (min > colMax) {
            min = colMax;
        }
    }
    System.out.println("每列最大值中的最小值:" + min);
}

六、效果展示

1、输入

3 2
1 2
4 5
3 4

3行2列的矩阵。

2、输出

4

3、说明

华为OD机试真题 Java 实现【矩阵元素的边界值】【2023 B卷 100分】,附详细解题思路-LMLPHP

4、再输入

6 5
1 2 4 5 6
4 5 5 8 1
3 4 3 6 8
25 16 4 86 12
25 16 345 11 22
58 26 14 2 35

6行5列的矩阵。

5、再输出

26

6、再说明

1
4
3
25
25
58
第1列的最大值:58
2
5
4
16
16
26
第2列的最大值:26
4
5
3
4
345
14
第3列的最大值:345
5
8
6
86
11
2
第4列的最大值:86
6
1
8
12
22
35
第5列的最大值:35
每列最大值中的最小值:26


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试真题 Java 实现【矩阵元素的边界值】【2023 B卷 100分】,附详细解题思路-LMLPHP

07-14 16:18