題幹:
給定乙個整數陣列 nums,求出陣列從索引 i 到 j(i ≤ j)範圍內元素的總和,包含 i、j 兩點。
實現 numarray 類:
numarray(int nums) 使用陣列 nums 初始化物件
int sumrange(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 = new numarray([-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))
0 <= nums.length <= 104
-105 <= nums[i] <= 105
0 <= i <= j < nums.length
最多呼叫 104 次 sumrange 方法
核心思想:
注意本體的提示,本體的呼叫次數非常多,而且陣列的區間非常大,每次計算重新累加都會十分浪費時間,所以考慮空間換時間,儲存計算結果。區間的值 = sum[right] - sum[left - 1]
示例**:
class
numarray
}public
intsumrange
(int i,
int j)
return sums[j +1]
- sums[i];}
}/**
* your numarray object will be instantiated and called as such:
* numarray obj = new numarray(nums);
* int param_1 = obj.sumrange(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 說明 你可以假設陣列不可變。會多...
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 範圍...