給定乙個整數陣列nums
,求出陣列從索引i
到 j(i ≤ j)
範圍內元素的總和,包含i
、j
兩點。
實現 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 說明 你可以假設陣列不可變。會多...