나는 최근에 두 가지 목록, 즉 마스터 목록과 잠재적으로 다른 순서로 마스터 목록에있는 항목의 하위 집합을 포함하는 작은 목록을 가진 직장에서 해결하는 데 문제가있었습니다. 목록에없는 항목의 순서를 변경하지 않고 가능한 한 항상 동일한 위치에 항목을 유지하지 않고 하위 집합의 항목이 동일한 순서로 표시되도록 마스터 목록을 다시 정렬해야했습니다. 좋아, 아마 혼란 스러울 것 같아, 나는 그것을 분해 할 것이다 :
- 마스터리스트는 기본 품목 순서를 정의합니다.
- 하위 집합 목록은 특정 항목의 상대 순서를 정의합니다.
- 마스터리스트가 서브 세트리스트에 따라 순서가 다른 두 가지 요소를 갖는 경우, 마스터리스트의 이전 항목은 서브 세트리스트 내의 다른 항목과 비교하여 올바른 위치에있는 가장 빠른 색인으로 이동되어야합니다. (즉, 후자의 항목 바로 뒤에)
당신의 임무는이 재정렬 알고리즘을 구현하는 것입니다.
테스트 사례 예
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]
규칙
- 표준 허점, yadda yadda, 편리한 I / O, blah blah.
- 예제에서 숫자와 문자열을 사용하더라도 정수, 문자열 또는 언어에서 편리한 경우 이기종 목록을 포함하여 등식 시맨틱이 정의 된 요소이든 하나의 요소 유형 만 지원하면됩니다.
- 마스터리스트와 서브 세트리스트에 중복이 없다고 가정 할 수 있습니다
- 서브 세트 목록에있는 모든 항목이 마스터 목록에 있다고 가정 할 수 있습니다.
- 목록이 비어있을 수 있습니다
- 최소한 최대 100 개의 요소 길이의 배열을 지원해야합니다.
- 재정렬은 제자리에서 또는 새로운 목록 / 배열을 통해 구현 될 수 있습니다.
행복한 골프!
8 1 3 4 5 6 7 2 9 12 11 10마지막에서 두 번째 하나에 유효한 해결책은?