1380.矩阵中的幸运数
题目要求
题解
class Solution {
public List<Integer> luckyNumbers (int[][] matrix) {
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
// 找出每一行的最小值
//此处i表示行j表示列
for (int i = 0; i < matrix.length; i++) {
int tempRowMin = Integer.MAX_VALUE;//Integer.MAX_VALUE 整数范围最大值
for (int j = 0; j < matrix[0].length; j++) {
if (tempRowMin > matrix[i][j]) {
tempRowMin = matrix[i][j];
}
}
list1.add(tempRowMin);
}
// 找出每一列的最大值
//matrix[0].length是第0行的列数,只是选取最保险的0来取得列数这个准确的数字来保证循环可以遍历完每一列
//此处i表示列j表示行
for (int i = 0; i < matrix[0].length; i++) {
int tempColMax = Integer.MIN_VALUE; //Integer.MIN_VALUE 整数范围最小值
for (int j = 0; j < matrix.length; j++) {
if (tempColMax < matrix[j][i]) {
tempColMax = matrix[j][i];
}
}
list2.add(tempColMax);
}
//对比list1和list2中是否有重合的数字,如果有则该数字为幸运数
List<Integer> list = new ArrayList<>();
for (Integer temp : list1) {
if (list2.contains(temp)) {
list.add(temp);
}
}
return list;
}
}
使用遍历每一行和遍历每一列,后使用两个集合分别容纳每一行的最小值和每一行的最大值。后创建新的集合,用于容纳同时出现在前两个集合中的数字,则第三个创建的集合中的数字就是幸运数字。
方法使用
Java 集合类中的 **List.contains() 方法用于判断列表中是否包含指定元素。**如果列表中包含指定元素,则返回 true,否则返回 false。
Integer.MIN_VALUE 整数范围最小值
Integer.MAX_VALUE 整数范围最大值