Di recente ho avuto un problema da risolvere sul lavoro in cui avevo due elenchi: un elenco principale e un elenco più piccolo che contiene un sottoinsieme degli elementi nell'elenco principale potenzialmente in un ordine diverso. Avevo bisogno di riordinare l'elenco principale in modo tale che gli articoli nel sottoinsieme apparissero nello stesso ordine senza cambiare l'ordine degli articoli non presenti nell'elenco e mantenere gli articoli nella stessa posizione ogni volta che fosse possibile. Va bene, probabilmente suona confuso, quindi lo analizzerò:
- L'elenco principale definisce l'ordine predefinito degli articoli.
- L'elenco dei sottoinsiemi definisce l'ordine relativo di alcuni elementi.
- Laddove l'elenco principale abbia due elementi fuori servizio in base all'elenco dei sottoinsiemi, l'elemento precedente nell'elenco principale dovrebbe essere spostato nel primo indice in cui si trova nella posizione corretta rispetto ad altri elementi nell'elenco dei sottoinsiemi. (cioè immediatamente dopo l'elemento successivo)
Il tuo compito è implementare questo algoritmo di riordino.
Esempi di casi di test
Master: [1, 2, 3]
Subset: []
Result: [1, 2, 3]
Master: [9001, 42, 69, 1337, 420]
Subset: [69]
Result: [9001, 42, 69, 1337, 420]
Master: [9001, 42, 69, 1337, 420, 99, 255]
Subset: [69, 9001, 1337]
Result: [42, 69, 9001, 1337, 420, 99, 255]
Master: [1, 2, 3, 4, 5]
Subset: [2, 5]
Result: [1, 2, 3, 4, 5]
Master: [apple, banana, carrot, duck, elephant]
Subset: [duck, apple]
Result: [banana, carrot, duck, apple, elephant]
Master: [Alice, Betty, Carol, Debbie, Elaine, Felicia, Georgia, Helen, Ilene, Julia]
Subset: [Betty, Felicia, Carol, Julia]
Result: [Alice, Betty, Debbie, Elaine, Felicia, Carol, Georgia, Helen, Ilene, Julia]
Master: [snake, lizard, frog, werewolf, vulture, dog, human]
Subset: [snake, werewolf, lizard, human, dog]
Result: [snake, frog, werewolf, lizard, vulture, human, dog]
Master: [Pete, Rob, Jeff, Stan, Chris, Doug, Reggie, Paul, Alex]
Subset: [Jeff, Stan, Pete, Paul]
Result: [Rob, Jeff, Stan, Pete, Chris, Doug, Reggie, Paul, Alex]
Master: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Subset: [8, 1, 2, 12, 11, 10]
Result: [3, 4, 5, 6, 7, 8, 1, 2, 9, 12, 11, 10]
Master: [lol, rofl, lmao, roflmao, lqtm, smh, jk, wat]
Subset: [wat, lmao, rofl]
Result: [lol, roflmao, lqtm, smh, jk, wat, lmao, rofl]
Regole
- Scappatoie standard, yadda yadda, I / O conveniente, blah blah.
- Anche se gli esempi usano numeri e stringhe, devi solo supportare un tipo di elemento, che sia numeri interi, stringhe o qualsiasi altra cosa con semantica di uguaglianza ben definita, compresi elenchi eterogenei se è conveniente nella tua lingua.
- Si può presumere che sia l'elenco principale che l'elenco dei sottoinsiemi non contengano duplicati
- Si può presumere che tutti gli elementi trovati nell'elenco dei sottoinsiemi siano presenti nell'elenco principale
- Entrambi gli elenchi potrebbero essere vuoti
- È necessario supportare almeno matrici lunghe fino a 100 elementi.
- Il riordino può essere implementato sul posto o attraverso la creazione di un nuovo elenco / array.
Buon golf!
8 1 3 4 5 6 7 2 9 12 11 10
una soluzione valida per la penultima?