Menu
CoddyTech
flag Ar iconالعربيةdown icon

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]]