LeetCode 303 區域和檢索 陣列不可變

2021-09-25 19:02:02 字數 1027 閱讀 7479

給定乙個整數陣列  nums,求出陣列從索引 i 到 j  (i ≤ j) 範圍內元素的總和,包含 i,  j 兩點。

示例:

給定 nums = [-2, 0, 3, -5, 2, -1],求和函式為 sumrange()

sumrange(0, 2) -> 1

sumrange(2, 5) -> -1

sumrange(0, 5) -> -3

說明:

你可以假設陣列不可變。

會多次呼叫 sumrange 方法。

暴力解法很簡單,然而超時了,,,不可取

class numarray(object):

def __init__(self, nums):

""":type nums: list[int]

"""self.nums = nums

def sumrange(self, i, j):

""":type i: int

:type j: int

:rtype: int

"""nums_sum = 0

for num in range(i,j+1):

nums_sum += self.nums[num]

return nums_sum

我們注意到,題目其實做了一些小提示,他說會呼叫多次sumrange的方法,而且這道題的模板也與一般的模板不是太相同。

我們要善於捕捉這個資訊,相當於使用額外的空間來換取速度。

class numarray:

def __init__(self, nums: list[int]):

self.accu = [0]

for num in nums:

def sumrange(self, i: int, j: int) -> int:

return self.accu[1+j]-self.accu[i]

303 區域和檢索 陣列不可變

給定乙個整數陣列 nums,求出陣列從索引 i 到 j i j 範圍內元素的總和,包含 i,j 兩點。示例 給定 nums 2,0,3,5,2,1 求和函式為 sumrange sumrange 0,2 1 sumrange 2,5 1 sumrange 0,5 3 說明 你可以假設陣列不可變。會多...

303 區域和檢索 陣列不可變

給定乙個整數陣列 nums,求出陣列從索引 i 到 j i j 範圍內元素的總和,包含 i,j 兩點。示例 給定 nums 2,0,3,5,2,1 求和函式為 sumrange sumrange 0,2 1 sumrange 2,5 1 sumrange 0,5 3說明 你可以假設陣列不可變。會多次...

303 區域和檢索 陣列不可變

給定乙個整數陣列 nums,求出陣列從索引 i 到 j i j 範圍內元素的總和,包含 i j 兩點。實現 numarray 類 numarray int nums 使用陣列 nums 初始化物件 int sumrange int i,int j 返回陣列 nums 從索引 i 到 j i j 範圍...