1. 程式人生 > >[Leetcode]303.區域和檢索

[Leetcode]303.區域和檢索

題目

簡單題,字首和方法

乍一看就覺得應該用字首和來做,一個數組多次查詢。

實現方法: 新建一個private陣列prefix_sum[i],用來儲存nums前i個數組的和

需要找區間和的時候直接通過prefix_sum[j]-prefix[i-1]即可得到從[i,j]區間的和,當i是0的時候需要特殊處理以防陣列越界。

 1 class NumArray {
 2 public:
 3     NumArray(vector<int> nums) {
 4         prefix_sum.reserve(nums.size());
 5         int
sum = 0; 6 for(int i: nums) { 7 sum+=i; 8 prefix_sum.push_back(sum); 9 } 10 } 11 12 int sumRange(int i, int j) { 13 if(i == 0) return prefix_sum[j]; 14 return prefix_sum[j]-prefix_sum[i-1]; 15 } 16 private: 17 vector<int
> prefix_sum; 18 };