1 minute read

<-E> Lucky Numbers in a Matrix

class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        vector<int> temp_min;
        vector<int> temp_max;
        vector<int> ans;
        
        for(int i = 0; i != matrix.size(); i++) {
            int check_min = matrix[i][0];
           for(int j = 0; j != matrix[0].size(); j++) {
              if(check_min > matrix[i][j])
                  check_min = matrix[i][j];
           }
            temp_min.push_back(check_min);
        }
        for(int i = 0; i != matrix[0].size(); i++) {
            int check_max = matrix[0][i];
           for(int j = 0; j != matrix.size(); j++) {
              if(check_max < matrix[j][i])
                  check_max = matrix[j][i];
           }
            temp_max.push_back(check_max);
        }
       
        for(int i = 0; i != temp_min.size(); i++) {
            if(find(temp_max.begin(), temp_max.end(), temp_min[i]) != temp_max.end())
                ans.push_back(temp_min[i]);
        }
        
        return ans;
    }
};

// 解法2
class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        
        vector<int> ans;
        
        int liRow = -1;
        int liCol = -1;
        
        for( int i = 0; i < matrix.size(); ++i ) {
            int col = 0;
            for( int j = 1; j < matrix[i].size(); ++j ) {
                if ( matrix[i][j] < matrix[i][col])
                    col = j;
            }
            
            if ( liRow == -1 || matrix[liRow][liCol] < matrix[i][col]) {
                liRow = i;
                liCol = col;
            }
        }
        
        for( int i = 0; i < matrix.size(); ++i ) {
            if ( matrix[i][liCol] > matrix[liRow][liCol])
                return ans;
        }
        ans.push_back(matrix[liRow][liCol]);
        return  ans;
        
        
    }
};