每日一題 79區域和檢索 陣列不可變

2021-10-21 02:23:44 字數 1651 閱讀 5142

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

實現 numarray 類:

numarray

(int

nums) 使用陣列 nums 初始化物件

intsumrange

(int i,

int j) 返回陣列 nums 從索引 i 到 j(i ≤ j)範圍內元素的總和,包含 i、j 兩點(也就是

sum(nums[i]

, nums[i +1]

,...

, nums[j]

))

示例:

輸入:

["numarray"

,"sumrange"

,"sumrange"

,"sumrange"][

[[-2

,0,3

,-5,

2,-1

]],[

0,2]

,[2,

5],[

0,5]

]輸出:

[null,1,

-1,-

3]解釋:numarray numarray =

newnumarray([

-2,0

,3,-

5,2,

-1])

;numarray.

sumrange(0

,2);

// return 1 ((-2) + 0 + 3)

numarray.

sumrange(2

,5);

// return -1 (3 + (-5) + 2 + (-1))

numarray.

sumrange(0

,5);

// return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))

簡單題考慮直接相加:

class

numarray

public

intsumrange

(int i,

int j)

return sum;}}

/** * your numarray object will be instantiated and called as such:

* numarray obj = new numarray(nums);

* int param_1 = obj.sumrange(i,j);

*/

一看效率低的不行我就知道不簡單,原來還有一種思路,在直接在建構函式維護乙個數字,每個陣列的值是前面所有presum,這樣計算兩個位置和就變成陣列位置相減 秒啊 知道原理 這樣的簡單**還是可以的。

搞定!

每日一題 303 區域和檢索 陣列不可變

鏈結class numarray public vectordata numarray vector nums data.resize nums.size for int i 0 i其實一開始沒想那麼多,先直接過了這題easy 發現時間複雜度比較高後考慮優化 字首和a i presum i pres...

演算法題 303 區域和檢索 陣列不可變

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

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 說明 你可以假設陣列不可變。會多...