class Solution {public: vector<int> luckyNumbers(vector<vector<int>>& matrix) { const int n = matrix.size(), m = matrix.front().size(); auto min_per_row = vector<int>(n, numeric_limits<int>::max()); auto max_per_col = vector<int>(m, numeric_limits<int>::min()); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { min_per_row[i] = min(min_per_row[i], matrix[i][j]); max_per_col[j] = max(max_per_col[j], matrix[i][j]); } } auto ret = vector<int>(); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (matrix[i][j] == min_per_row[i] && matrix[i][j] == max_per_col[j]) { ret.push_back(matrix[i][j]); } } } return ret; }};