Gần đây tôi có một vấn đề cần giải quyết trong công việc khi tôi có hai danh sách: danh sách chính và danh sách nhỏ hơn chứa tập hợp con của các mục trong danh sách chính có khả năng theo thứ tự khác. Tôi cần sắp xếp lại danh sách chính theo cách các mục trong tập hợp con sẽ xuất hiện theo cùng một thứ tự mà không thay đổi thứ tự của các mục không tìm thấy trong danh sách và giữ các mục ở cùng một vị trí bất cứ khi nào có thể. Được rồi, điều đó có vẻ khó hiểu, vì vậy tôi sẽ phá vỡ nó:
- Danh sách chính xác định thứ tự mặc định của các mục.
- Danh sách tập hợp con xác định thứ tự tương đối của các mục nhất định.
- Trong danh sách chính có hai phần tử không theo thứ tự theo danh sách tập hợp con, mục được đặt trước trong danh sách chính sẽ được chuyển đến chỉ mục sớm nhất trong đó vị trí chính xác so với các mục khác trong danh sách tập hợp con. (tức là ngay sau mục sau)
Nhiệm vụ của bạn là thực hiện thuật toán sắp xếp lại này.
Ví dụ trường hợp kiểm tra
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]
Quy tắc
- Sơ hở tiêu chuẩn, yadda yadda, I / O thuận tiện, blah blah.
- Mặc dù các ví dụ sử dụng số và chuỗi, bạn chỉ cần hỗ trợ một loại phần tử, cho dù đó là số nguyên, chuỗi hoặc bất kỳ thứ gì khác có ngữ nghĩa đẳng thức được xác định rõ, bao gồm các danh sách không đồng nhất nếu thuận tiện trong ngôn ngữ của bạn.
- Bạn có thể giả sử cả danh sách chính và danh sách tập hợp con không chứa các mục trùng lặp
- Bạn có thể cho rằng tất cả các mục được tìm thấy trong danh sách tập hợp con được tìm thấy trong danh sách chính
- Danh sách có thể trống
- Tối thiểu, bạn phải hỗ trợ các mảng dài tối đa 100 phần tử.
- Sắp xếp lại có thể được thực hiện tại chỗ hoặc thông qua việc tạo ra một danh sách / mảng mới.
Chúc bạn chơi golf vui vẻ!
8 1 3 4 5 6 7 2 9 12 11 10
một giải pháp hợp lệ cho giải pháp thứ hai đến cuối cùng?