本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。
给定一个N*M矩阵,请先找出M个该矩阵中每列元素的最大值,然后输出这M个值中的最小值。
第一行输入两个数,分别为M和N。
接下来M行输入为矩阵的成员,每行N个成员,矩阵成员都是整数,范围-32768~32767。
先找出M个该矩阵中每列元素的最大值,然后输出这M个值中的最小值。
当你刷过下面这道题的时候,你就会发现本题【矩阵元素的边界值】简直就是白给的。
华为OD机试真题 Java 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路
这就是多刷题的好处,遇到类似的,是真的爽。完美解答本题,我只需要三分钟。
下面分享一下我的解题思路:
/**
* 先找出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);
}
3 2
1 2
4 5
3 4
3行2列的矩阵。
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列的矩阵。
26
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在线答疑。