Недавно мне пришлось решить проблему на работе, где у меня было два списка: основной список и меньший список, который содержит подмножество элементов в основном списке, потенциально в другом порядке. Мне нужно было изменить порядок главного списка таким образом, чтобы элементы в подмножестве отображались в том же порядке, не меняя порядок элементов, не найденных в списке, и сохраняя элементы в том же месте, когда это было возможно. Ладно, это может звучать странно, поэтому я разобью это:
- Основной список определяет порядок элементов по умолчанию.
- Список подмножеств определяет относительный порядок определенных элементов.
- Если основной список имеет два элемента не по порядку в соответствии со списком подмножеств, элемент, находящийся ранее в основном списке, должен быть перемещен в самый ранний индекс, где он находится в правильном положении относительно других элементов в списке подмножеств. (т.е. сразу после более позднего пункта)
Ваша задача - реализовать этот алгоритм переупорядочения.
Примеры тестовых случаев
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]
правила
- Стандартные лазейки, Ядда Ядда, удобный ввод-вывод, бла-бла.
- Несмотря на то, что в примерах используются числа и строки, вам нужно поддерживать только один тип элемента, будь то целые числа, строки или что-то еще с четко определенной семантикой равенства, включая гетерогенные списки, если это удобно на вашем языке.
- Вы можете предположить, что и главный список, и список подмножеств не содержат дубликатов
- Вы можете предположить, что все элементы, найденные в списке подмножеств, находятся в основном списке
- Любой список может быть пустым
- Вы должны, как минимум, поддерживать массивы длиной до 100 элементов.
- Переупорядочение может быть реализовано на месте или путем создания нового списка / массива.
Счастливого гольфа!
8 1 3 4 5 6 7 2 9 12 11 10
ли правильное решение для второго до последнего?