题目来源:https://leetcode-cn.com/problems/lucky-numbers-in-a-matrix/
大致题意:
给一个矩阵,找出其中所有满足以下条件的元素:
- 该元素为所在行最小值,所在列最大值
思路
- 遍历所有行,取出该行最小值
- 找到行最小值所在列,判断其是否为列最大值,若是则放入答案集合
代码:
public List<Integer> luckyNumbers(int[][] matrix) {
List<Integer> ans = new ArrayList<>();
int m = matrix.length;
int n = matrix[0].length;
for (int i = 0; i < m; i++) {
// 获取该行最小值
int min = Arrays.stream(matrix[i]).min().getAsInt();
// 遍历该行
for (int j = 0; j < n; j++) {
// 若当前位置即为最小值位置
if (matrix[i][j] == min) {
int cur = min;
// 遍历当前列,查看其是否为最大值
for (int k = 0; k < m; k++) {
if (cur < matrix[k][j]) {
cur = matrix[k][j];
break;
}
}
// 若为最大值,加入集合
if (cur == min) {
ans.add(min);
}
}
}
}
return ans;
}