وظيفة حساب الحد الأقصى لمجموع المصفوفة الفرعية مع قيد على الطول

Go Hard functions

مهمة «وظيفة حساب الحد الأقصى لمجموع المصفوفة الفرعية مع قيد على الطول»

اكتب دالة MaxSubarraySumWithLimit(nums []int, k int) int، والتي تستقبل مصفوفة أعداد صحيحة nums وعددًا صحيحًا k (1 ≤ k ≤ len(nums)). يجب أن تعيد الدالة أكبر مجموع لمصفوفة فرعية متصلة طولها لا يتجاوز k. إذا كانت المصفوفة فارغة، أعد 0. قم بتنفيذ خوارزمية بتعقيد زمني O(n).

تنسيق الإدخال

يتم إدخال رقمين: n (طول المصفوفة، 0 ≤ n ≤ 10^5) و k (1 ≤ k ≤ n). ثم n عددًا صحيحًا — عناصر المصفوفة (-10^9 ≤ nums[i] ≤ 10^9).

تنسيق الإخراج

عدد صحيح واحد — أقصى مجموع للمصفوفة الفرعية بطول لا يتجاوز k.

أمثلة

مثال 1

الإدخال
5 3 1 2 3 4 5
الإخراج
12

مثال 2

الإدخال
4 2 -1 -2 -3 -4
الإخراج
-1

مثال 3

الإدخال
7 1 2 3 4 5 -1 6
الإخراج
6

مثال 4

الإدخال
6 4 2 -1 3 4 -2 1
الإخراج
8

مثال 5

الإدخال
3 -5 10 20
الإخراج
15
main.go