leetcode 381 Insertar Borrar GetRandom O (1) - Duplicados mascotas

clase RandomizedCollection { 
    unordered_map < int , unordered_set < int >> m; 
    vector < int > Vals;
pública :
     / * * Inicializar la estructura de datos aquí. * / 
    RandomizedCollection () { 
        
    } 
    
    / * * Inserta un valor a la colección. Devuelve true si la colección no contienen ya el elemento especificado. * / 
    Bool inserto ( int val) {
         bool bandera = verdadero ;
        si (! m [val] .empty ()) flag = falso ;
        m [val] .Insert (vals.size ()); 
        vals.push_back (val); 
        devolver la bandera; 
    } 
    
    / * * Elimina un valor de la colección. Devuelve true si la colección contiene el elemento especificado. * / 
    Bool remove ( int val) { 
        auto y vpos = m [val];
        si (vpos.empty ()) de retorno  falsa ;
        int pos = * vpos.begin (); 
        vpos.erase (vpos.begin ()); 
        si (pos == vals.size () - 1 ) {vals.pop_back (); volver  verdadero ;} 
        de swap (Vals [pos], Vals [vals.size ()- 1 ]); 
        m [Vals [pos]] de borrado (vals.size (). - 1 ); 
        m [Vals [pos]] de inserción (pos.); 
        vals.pop_back (); 
        volver  verdadera ; 
    } 
    
    / * * Obtener un elemento aleatorio de la colección. * / 
    Int getRandom () {
         si (vals.empty ()) de retorno  0 ;
        int pos = random ()% vals.size ();
        retorno Vals [pos]; 
        
    } 
}; 

/ * *
 * Bool param_1 = obj-> inserto (val); 
 * Su objeto RandomizedCollection se creará una instancia y llamó como tal:
 * RandomizedCollection * obj = new RandomizedCollection (); 
 * Bool param_2 = obj-> remove (val); 
 * Int param_3 = obj-> getRandom (); 
 * /

 

Supongo que te gusta

Origin www.cnblogs.com/LiuQiujie/p/12604048.html
Recomendado
Clasificación