Ich hatte kürzlich ein Problem bei der Arbeit zu lösen, bei dem ich zwei Listen hatte: eine Hauptliste und eine kleinere Liste, die eine Teilmenge der Elemente in der Hauptliste möglicherweise in einer anderen Reihenfolge enthält. Ich musste die Hauptliste so neu anordnen, dass die Elemente in der Teilmenge in derselben Reihenfolge angezeigt wurden, ohne die Reihenfolge der nicht in der Liste gefundenen Elemente zu ändern, und die Elemente nach Möglichkeit an derselben Stelle aufbewahren. Okay, das klingt wahrscheinlich verwirrend, also werde ich es aufschlüsseln:
- Die Hauptliste definiert die Standardreihenfolge der Elemente.
- Die Teilmengenliste definiert die relative Reihenfolge bestimmter Elemente.
- Wenn die Hauptliste zwei Elemente enthält, die gemäß der Teilmengenliste nicht in der richtigen Reihenfolge sind, sollte das Element, das sich früher in der Hauptliste befindet, in den frühesten Index verschoben werden, in dem es sich relativ zu anderen Elementen in der Teilmengenliste an der richtigen Stelle befindet. (dh unmittelbar nach dem späteren Punkt)
Ihre Aufgabe ist es, diesen Neuordnungsalgorithmus zu implementieren.
Beispiel Testfälle
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]
Regeln
- Standard Schlupflöcher, Yadda Yadda, bequeme I / O, bla bla.
- Obwohl in den Beispielen Zahlen und Zeichenfolgen verwendet werden, müssen Sie nur einen Elementtyp unterstützen, unabhängig davon, ob es sich um Ganzzahlen, Zeichenfolgen oder andere Elemente mit genau definierter Gleichheitssemantik handelt, einschließlich heterogener Listen, sofern dies in Ihrer Sprache sinnvoll ist.
- Sie können davon ausgehen, dass sowohl die Master-Liste als auch die Subset-Liste keine Duplikate enthalten
- Sie können davon ausgehen, dass sich alle in der Teilmengenliste gefundenen Elemente in der Masterliste befinden
- Jede Liste kann leer sein
- Sie müssen mindestens Arrays mit einer Länge von bis zu 100 Elementen unterstützen.
- Die Neuordnung kann vor Ort oder durch die Erstellung einer neuen Liste / eines neuen Arrays implementiert werden.
Viel Spaß beim Golfen!
8 1 3 4 5 6 7 2 9 12 11 10
eine gültige Lösung für die vorletzte?