Menu
CoddyTech

Permutations

בינוניחיפוש לאחורpython iconjava iconcpp iconc iconjs icon+10

מקבלים רשימה nums של מספרים שלמים שונים. החזירו את כל הסדרים האפשריים של הערכים האלה, כשכל אחד מהם הוא רשימה שמשתמשת בכל ערך בדיוק פעם אחת, כך ש־n ערכים נותנים n! סדרים. הציגו אותם בסדר לקסיקוגרפי: השוו בין שני סדרים מיקום אחר מיקום, וההבדל הראשון הוא שיכריע. עבור [1, 2, 3], הסדר הזה מציב את [1, 2, 3] ראשון ואת [3, 2, 1] אחרון.

פונקציה

permute(nums: integer-array) → integer-2d-array
numsinteger-array
הערכים, כולם שונים, בכל סדר
מחזירהinteger-2d-array
כל הסידורים האפשריים של הערכים, בסדר לקסיקוגרפי

אילוצים

  • 1 ≤ nums.length ≤ 6
  • -10 ≤ nums[i] ≤ 10
  • כל הערכים ב־nums שונים.
  • nums יכולים להופיע בכל סדר.

דוגמאות

קלט
nums = [3, 1, 2]
פלט
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
הסבר
לשלושה ערכים יש 3! = 6 סידורים. לאחר מיון, הערכים הם 1, 2, 3, ולכן הסידורים שמתחילים ב־1 מופיעים ראשונים, ו־[1, 2, 3] מופיע לפני [1, 3, 2] כי 2 קטן מ־3 במיקום השני. סדר הקלט אינו משנה.

lock icon+13 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

בהינתן סדר אחד, האם תוכל ליצור את הסדר הבא בסדר לקסיקוגרפי במקום, בזמן O(n) ובשימוש ב־O(1) מקום נוסף?

איפוס הקוד
def permute(nums):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

nums = [3, 1, 2]

צפוי

[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]