跳转至

5356.矩阵中的幸运数 (Easy)*

题目描述*

给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。

幸运数是指矩阵中满足同时下列两个条件的元素:

在同一行的所有元素中最小,在同一列的所有元素中最大。

提示*

m == mat.length, n == mat[i].length, 1 <= n, m <= 50, 1 <= matrix[i][j] <= 10^5

矩阵中的所有元素都是不同的

代码*

直接暴力就行,当然,菜鸡的暴力和带哥的暴力还是不一样的。

class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        vector<int> res;
        // 统计每行最小的数
        for(int i = 0; i < m; i++) {
            int minColIndex = findMinInRow(matrix, i);
            if(i == findMaxInCol(matrix, minColIndex)) {
                res.push_back(matrix[i][minCol]);
            }
        }
        return res;
    }
    // 找到 row 行最小数的列下标
    int findMinInRow(vector<vector<int>>& matrix, int row) {
        int minIndex = 0;
        for(int i = 1; i < matrix[0].size(); i++) {
            if(matrix[row][minIndex] > matrix[row][i]) {
                minIndex = i;
            }
        }
        return minIndex;
    }
    // 找到 col 行最大数的行下标
    int findMaxInCol(vector<vector<int>>& matrix, int col) {
        int maxIndex = 0;
        for(int i = 1; i < matrix.size(); i++) {
            if(matrix[i][col] > matrix[maxIndex][col]) {
                maxIndex = i;
            }
        }
        return maxIndex;
    }
};
class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        vector<int> res;
        int m = matrix.size(), n = matrix[0].size();
        vector<int> minForRows(m, INT_MAX);
        vector<int> maxForCols(n, 0);
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(minForRows[i] > matrix[i][j]) {
                    minForRows[i] = matrix[i][j];
                }
                if(maxForCols[j] < matrix[i][j]) {
                    maxForCols[j] = matrix[i][j];
                }
            }
        }
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(matrix[i][j] == minForRows[i] && matrix[i][j] == maxForCols[j]) {
                    res.push_back(matrix[i][j]);
                }
            }
        }
        return res;
    }
};

最后更新: July 23, 2022