✍️ پیش از لغزاندن پنجره، باید وضعیت اولین پنجره را درست بسازیم. برش nums[:k] از خانه صفر شروع میشود و خانه k را شامل نمیشود؛ بنابراین دقیقاً k عضو اول را میدهد. اگر k سه باشد، آخرین خانه داخل برش دو است. فرق شماره خانه و تعداد عضو اینجا دوباره خودش را نشان میدهد.
مثلاً اولین پنجره دوتایی در [8, -3, 6] برابر [8,-3] و جمع آن پنج است. حالا خروجی این کد را انتخاب کن:
nums = [4, -2, 7, 1]
k = 3
current = sum(nums[:k])
print(current)
عدد منفی هم یک عضو کامل پنجره است و از جمع کم میکند؛ قرار نیست آن را حذف کنیم تا جواب بزرگتر شود. هدف فعلی فقط جمع اولین پنجره است، نه بهترین پنجره همه فهرست. در گامهای بعد جابهجایی و انتخاب بیشینه را اضافه میکنیم.
خطای رایج، استفاده از nums[:k+1] برای گرفتن k عضو است که یک عضو اضافه میآورد. اشتباه دیگر اینه که از صفر تا خود k را به شکل بازه بسته تصور کنیم، در حالی که پایان برش در پایتون بیرون نتیجه قرار دارد. برای پاسخ، ابتدا سه عضو داخل برش را جدا بنویس و بعد جمع کن.
فعالیت شما
جمع nums[:3] را برای [4,-2,7,1] انتخاب کن؛ فقط سه عضو اول در پنجره هستند و عدد منفی حذف نمیشود.