Menu
CoddyTech

Longest Subarray with Sum K

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

الدالة

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

القيود

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • يبقى كل مجموع بادئة بين -2 × 108 و2 × 108، لذا تكفي الأعداد الصحيحة ذات 32 بت.
  • أعِد 0 عندما لا يكون هناك أي مصفوفة فرعية يكون مجموع عناصرها k.

أمثلة

المدخلات
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
المخرجات
5
الشرح
مجموع ثلاث مقاطع يساوي 5: [2, 3] في النهاية، و[2, -1, 3, 1] في البداية، و[3, 1, -4, 2, 3] عند الفهارس من 2 إلى 6. المقطع الأخير هو الأطول، ويتكون من 5 عناصر.
challenge icon

سؤال إضافي

كيف ستجد أطول مصفوفة فرعية يكون مجموعها على الأكثر k، مع السماح بالقيم السالبة؟

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

اختبار #1

اختبار #2

اختبار #3

الوسائط

nums = [2, -1, 3, 1, -4, 2, 3]
k = 5

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

5