Menu
CoddyTech

Next Permutation

تحصل على مصفوفة من الأعداد الصحيحة nums، وقد تتكرر القيم. تخيّل جميع الترتيبات المختلفة لهذه القيم، مرتبةً وفق الترتيب القاموسي: قارن بين ترتيبين عند أول فهرس يختلفان فيه، ويأتي أولًا الترتيب الذي تكون قيمته أصغر عند ذلك الموضع. أعد الترتيب الذي يأتي مباشرةً بعد nums في ذلك الترتيب.

إذا كان nums بالفعل أكبر ترتيب، فلا يوجد ترتيب يأتي بعده: أعد أصغر ترتيب، وهو القيم مرتبة تصاعديًا. اسعَ إلى تحقيق زمن O(n) وذاكرة إضافية O(1).

الدالة

nextPermutation(nums: integer-array) → integer-array
numsinteger-array
الترتيب الحالي للقيم
تُرجعinteger-array
الترتيب التالي حسب الترتيب المعجمي، أو القيم مرتبةً تصاعديًا إذا كانت nums هي الأكبر

القيود

  • 1 ≤ nums.length ≤ 5000
  • 0 ≤ nums[i] ≤ 1000

أمثلة

المدخلات
nums = [2, 5, 4, 1]
المخرجات
[4, 1, 2, 5]
الشرح
الذيل 5, 4, 1 يتناقص، لذا يجب أن يزداد العدد 2 الذي يسبقه. أصغر قيمة في الذيل أكبر من 2 هي 4؛ ضعها في مكانه ورتّب الباقي تصاعديًا: [4, 1, 2, 5].
challenge icon

سؤال إضافي

كيف يمكنك العثور على الترتيب السابق بدلاً من ذلك، أي الترتيب الذي يأتي مباشرةً قبل nums حسب الترتيب المعجمي؟

إعادة ضبط الشيفرة
def nextPermutation(nums):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

nums = [2, 5, 4, 1]

الإخراج المتوقع

[4, 1, 2, 5]