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

Subarray Sum Equals K

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

الدالة

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

القيود

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • يحتوي مصفوفة بهذا الطول على 200,010,000 مصفوفة فرعية كحد أقصى، لذا فإن الإجابة تتسع في عدد صحيح موقّع من 32 بت.

أمثلة

المدخلات
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
المخرجات
4
الشرح
مجموع أربع سلاسل متتالية يساوي 7: [3, 4]، و[1, 3, 3]، و[3, 3, 1]، و[3, 4, -7, 1, 3, 3]. في السلسلة الأخيرة، يُلغي ‎-7 العددين 3 و4، ثم يعود المجموع إلى 7 لاحقًا، لذا قد تطابق سلسلة متتالية المطلوب حتى بعد أن يتجاوز مجموعها k.

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

challenge icon

سؤال إضافي

كيف ستغيّر الحل لإرجاع طول أطول مصفوفة فرعية يكون مجموعها k، مع الحفاظ على زمن تنفيذ O(n)؟

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

nums = [3, 4, -7, 1, 3, 3, 1, -4]
k = 7

المتوقع

4