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

Longest Increasing Subsequence

لديك قائمة من الأعداد الصحيحة nums. تحتفظ المتتالية الجزئية ببعض العناصر بترتيبها الأصلي، وتحذف العناصر الأخرى؛ ولا يلزم أن تكون العناصر المحتفظ بها متجاورة. أعد طول أطول متتالية جزئية تزداد قيمها بصرامة من اليسار إلى اليمين. لا يُعد تساوي قيمتين متتاليتين زيادةً.

الدالة

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
قائمة الأعداد الصحيحة للاختيار منها
تُرجعinteger
طول أطول متتالية فرعية متزايدة بصرامة

القيود

  • 1 ≤ nums.length ≤ 2500
  • -104 ≤ nums[i] ≤ 104

أمثلة

المدخلات
nums = [3, 1, 8, 2, 5, 9, 4, 7]
المخرجات
4
الشرح
يُشكّل الاحتفاظ بـ 1، 2، 5، 9 متتالية جزئية متزايدة طولها 4، وكذلك الحال مع 1، 2، 5، 7 و1، 2، 4، 7. لا يوجد اختيار من خمس قيم يواصل الارتفاع، لذا فالإجابة هي 4.

lock icon+20 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

هل يمكنك إرجاع إحدى أطول المتتاليات الفرعية المتزايدة نفسها، وليس طولها فقط، مع الاستمرار في التنفيذ بزمن O(n log n)؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [3, 1, 8, 2, 5, 9, 4, 7]

المتوقع

4