Menu
CoddyTech

Range Sum Query

נתון לך מערך של מספרים שלמים nums שאינו משתנה ורשימה של queries. כל שאילתה היא זוג [left, right] של אינדקסים שמתחילים מ־0, והיא מבקשת לחשב את nums[left] + nums[left+1] + ... + nums[right], כולל שני הקצוות. החזר את התשובות באותו סדר כמו השאילתות.

פונקציה

sumRange(nums: integer-array, queries: integer-2d-array) → integer-array
numsinteger-array
מערך המספרים השלמים, זהה עבור כל שאילתה
queriesinteger-2d-array
הטווחים שיש לחבר, כל אחד מהם זוג [left, right] שבו left ≤ right
מחזירהinteger-array
הסכום של כל טווח, אחד לכל שאילתה, לפי סדר השאילתות

אילוצים

  • 1 ≤ nums.length ≤ 104
  • -104 ≤ nums[i] ≤ 104
  • 1 ≤ queries.length ≤ 1500
  • 0 ≤ left ≤ right < nums.length עבור כל שאילתה [left, right]

דוגמאות

קלט
nums = [3, -2, 5, 1, -4, 6]queries = [[0, 2], [1, 4], [3, 3]]
פלט
[6, 0, 1]
הסבר
האינדקסים 0 עד 2 מכילים 3 + (-2) + 5 = 6. האינדקסים 1 עד 4 מכילים -2 + 5 + 1 + (-4) = 0. הטווח [3, 3] הוא הערך היחיד 1.

lock icon+14 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

כעת המספרים יוצרים רשת, וכל שאילתה מבקשת את סכום המלבּן שמוגדר על ידי שתי פינות. איך היית מרחיב את סכומי הקידומות כדי לענות על כל שאילתה במספר קבוע של פעולות?

איפוס הקוד
def sumRange(nums, queries):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

קלט

nums = [3, -2, 5, 1, -4, 6]
queries = [[0, 2], [1, 4], [3, 3]]

צפוי

[6, 0, 1]