[LeetCode] 1380. Número de la suerte en matriz (C ++)

1 descripción del tema

Dale una matriz m * n, los números en la matriz son diferentes. Devuelva todos los números de la suerte de la matriz en cualquier orden.
El número de la suerte se refiere al elemento de la matriz que cumple las siguientes dos condiciones al mismo tiempo:

  • El más pequeño entre todos los elementos de la misma fila
  • El más grande entre todos los elementos de la misma columna

2 Descripción de ejemplo

2.1 Ejemplo 1

Entrada: matriz = [[3,7,8], [9,11,13], [15,16,17]]
Salida: [15]
Explicación: 15 es el único número de la suerte porque está en la fila El mínimo valor también es el valor máximo en la columna.

2.2 Ejemplo 2

Entrada: matriz = [[1,10,4,2], [9,3,8,7], [15,16,17,12]]
Salida: [12]
Explicación: 12 es el único número de la suerte, porque Es el valor mínimo en su fila y el valor máximo en su columna.

2.3 Ejemplo 3

Entrada: matriz = [[7,8], [1,2]]
Salida: [7]

3 consejos para resolver problemas

m == mat.length
n == mat [i] .length
1 <= n, m <= 50
1 <= matriz [i] [j] <= 10 ^ 5
Todos los elementos de la matriz son diferentes

4 ideas para resolver problemas

Primero resuelva para la fila más pequeña y, debajo de la fila más pequeña, juzgue que la columna es la más grande y luego puede importar los números coincidentes.

5 Código fuente detallado (C ++)

class Solution {
    
    
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
    
    
        vector<int> res ;
        for ( int i = 0 ; i < matrix.size() ; i ++ )
        {
    
    
            int min = matrix[i][0] ; //保存一个一行最小的数
            int index = 0 ; //一行最小数的下标

            //找行最小
            for ( int j = 1 ; j < matrix[i].size() ; j ++ )
            {
    
    
                if ( min > matrix[i][j] )
                {
    
    
                    min = matrix[i][j] ;
                    index = j ;
                }
            }

            //判断是否是该列的最大值
            int flag = 1 ; //0表示不是,1表示是,flag判断的是是否是该列最大值
            for ( int j = 0 ; j < matrix.size() ; j ++ )
            {
    
    
                if ( matrix[j][index] > min )
                {
    
    
                    flag = 0 ;
                    break ;
                }
            }
            if ( flag == 1 )
            {
    
    
                res.push_back(min) ;
            }
        }
        return res ;
    }
};

Supongo que te gusta

Origin blog.csdn.net/Gyangxixi/article/details/114126143
Recomendado
Clasificación