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

Sliding Window Maximum

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

أعِد مصفوفة تحتوي على أكبر قيمة داخل النافذة عند كل موضع من مواضعها، من اليسار إلى اليمين. تحتوي المصفوفة ذات الطول n على n-k+1 نافذة، لذا تحتوي النتيجة على n-k+1 قيمة.

الدالة

maxSlidingWindow(nums: integer-array, k: integer) → integer-array
numsinteger-array
المصفوفة التي تنزلق النافذة فوقها
kinteger
عدد القيم في كل نافذة
تُرجعinteger-array
أكبر قيمة في كل نافذة، من النافذة الموجودة في أقصى اليسار إلى النافذة الموجودة في أقصى اليمين

القيود

  • 1 ≤ k ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • تحتوي النتيجة على nums.length-k+1 قيمة، واحدة لكل نافذة، بالترتيب من اليسار إلى اليمين.

أمثلة

المدخلات
nums = [4, 2, 12, 3, 8, 5, 1]k = 3
المخرجات
[12, 12, 12, 8, 8]
الشرح
يقع 12 ضمن النوافذ الثلاث الأولى، [4, 2, 12] و[2, 12, 3] و[12, 3, 8]. بعد خروجه، تحتوي النافذتان [3, 8, 5] و[8, 5, 1] كلتاهما على 8 بوصفه أكبر قيمة.

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

challenge icon

سؤال إضافي

هل يمكنك إنشاء طابور يدعم إضافة قيمة إلى الخلف، وإزالة القيمة من الأمام، وقراءة قيمته العظمى الحالية، كلٌّ منها بزمن مُستهلك O(1)؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [4, 2, 12, 3, 8, 5, 1]
k = 3

المتوقع

[12, 12, 12, 8, 8]