Saya baru-baru ini memiliki masalah untuk dipecahkan di tempat kerja di mana saya memiliki dua daftar: daftar master, dan daftar yang lebih kecil yang berisi subset item dalam daftar master yang berpotensi dalam urutan yang berbeda. Saya perlu menyusun ulang daftar master sedemikian rupa sehingga item dalam subset akan muncul dalam urutan yang sama tanpa mengubah urutan item yang tidak ditemukan dalam daftar dan menyimpan item di lokasi yang sama jika memungkinkan. Oke, itu mungkin terdengar membingungkan, jadi saya akan memecahnya:
- Daftar master mendefinisikan urutan item default.
- Daftar subset mendefinisikan urutan relatif dari item tertentu.
- Jika daftar master memiliki dua elemen yang tidak sesuai dengan daftar subset, item yang sebelumnya dalam daftar master harus dipindahkan ke indeks paling awal di mana ia berada di lokasi yang benar relatif terhadap item lain dalam daftar subset. (Yaitu segera setelah item kemudian)
Tugas Anda adalah mengimplementasikan algoritma pemesanan ulang ini.
Contoh Kasus Uji
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]
Aturan
- Celah standar, yadda yadda, I / O yang nyaman, bla bla.
- Meskipun contoh menggunakan angka dan string, Anda hanya perlu mendukung satu jenis elemen, apakah itu bilangan bulat, string, atau apa pun dengan semantik kesetaraan yang terdefinisi dengan baik, termasuk daftar heterogen jika sesuai dengan bahasa Anda.
- Anda dapat mengasumsikan daftar master dan daftar subset tidak mengandung duplikat
- Anda dapat mengasumsikan bahwa semua item yang ditemukan dalam daftar subset ditemukan dalam daftar master
- Daftar mana pun mungkin kosong
- Anda harus, minimal, mendukung array hingga 100 elemen.
- Penataan ulang dapat diimplementasikan di tempat atau melalui pembuatan daftar / larik baru.
Selamat Golf!
8 1 3 4 5 6 7 2 9 12 11 10
solusi yang valid untuk yang kedua-terakhir?