✍️ جمع پیشوندی برای وقتی مفید است که از یک فهرست ثابت، بارها جمع بخشهای مختلف را میخواهیم. یک بار اطلاعات کمکی میسازیم و بعد هر بازه را با دو مقدار پاسخ میدهیم. تعریف دقیق این دوره اینه: prefix[i] جمع اولین i عضو است. پس prefix[0] صفر است و طول جدول یک واحد از ورودی بیشتر میشود.
nums = [3, -1, 5]
prefix = [0]
for number in nums:
prefix.append(prefix[-1] + number)
print(prefix) # [0, 3, 2, 7]
عدد منفی مشکلی ایجاد نمیکند؛ فقط جمع تجمعی را کاهش میدهد. برای جمع خانههای یک تا دو، جمع سه عضو اول را میگیریم و سهم اولین عضو را کم میکنیم: prefix[3] - prefix[1] یعنی هفت منهای سه، برابر چهار.
این جدول نسخه مرتبشده یا فهرست جواب همه بازهها نیست. اگر ورودی بعداً عوض شود، جدول قبلی دیگر معتبر نخواهد بود؛ این بخش ورودی ثابت دارد. خطای رایج، حذف صفر ابتدایی و بعد استفاده از همان فرمول قبلی است. تعریف شاخص را روی یک مثال کوتاه بنویس؛ با همین کار بیشتر خطاهای یکخانهای قبل از اجرا دیده میشوند.
فعالیت شما
تعریف prefix[i] بهعنوان جمع i عضو اول را بخوان؛ برای [3,-1,5] جدول [0,3,2,7] و برای خالی [0] است. این گام خواندنی است.