矩阵中的幸运数

题解方法

  • 模拟

模拟

  • 幸运数应满足:在同一行的所有元素中最小;在同一列的所有元素中最大
  • 预处理每行每列的最值
  • 遍历比较当前数是否等于所在行列的最值

核心代码

预处理最值

1
2
3
4
5
6
7
8
9
10
11
int[] minRow = new int[m];
int[] maxCol = new int[n];
Arrays.fill(minRow, Integer.MAX_VALUE);

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int num = matrix[i][j];
minRow[i] = Math.min(minRow[i], num);
maxCol[j] = Math.max(maxCol[j], num);
}
}

遍历比较

1
2
3
4
5
6
7
8
9
List<Integer> res = new LinkedList<>();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int num = matrix[i][j];
if (num == minRow[i] && num == maxCol[j]) {
res.add(num);
}
}
}

题目来源

1380. 矩阵中的幸运数 - 力扣(LeetCode) (leetcode-cn.com)