LeetCode 1380. Lucky Numbers in a Matrix
考点 | 难度 |
---|---|
Matrix | Easy |
题目
Given an m x n
matrix of distinct numbers, return all lucky numbers in the matrix in any order.
A lucky number is an element of the matrix such that it is the minimum element in its row and maximum in its column.
思路
先对每行找到最小值,再判断这个值是不是那一列里最大的。
答案
public List<Integer> luckyNumbers (int[][] matrix) {
List<Integer> result = new ArrayList<Integer>();
for (int row = 0; row < matrix.length; row++) {
int minCol = minColInRow(matrix, row);
int value = matrix[row][minCol];
if (checkIfMaxInCol(matrix, minCol, value)) {
result.add(value);
}
}
return result;
}
private int minColInRow(int[][] matrix, int row) {
int minIndex = 0, min = matrix[row][minIndex];
for (int col = 1; col < matrix[row].length; col++) {
if (matrix[row][col] < min) {
min = matrix[row][col];
minIndex = col;
}
}
return minIndex;
}
private boolean checkIfMaxInCol(int[][] matrix, int col, int value) {
for (int row = 0; row < matrix.length; row++) {
if (matrix[row][col] > value) return false;
}
return true;
}