range-sum-query-immutable.cpp (450B)
1 class NumArray { 2 public: 3 unordered_map<int, int> map {}; 4 NumArray(vector<int>& nums) { 5 // init with nums list 6 int prefix = 0; 7 for(size_t i = 0; i < nums.size(); ++i) { 8 map[i] = prefix; 9 prefix += nums[i]; 10 } 11 map[nums.size()] = prefix; 12 } 13 14 int sumRange(int left, int right) { 15 // query: return sum[left:right] 16 return map[right + 1] - map[left]; 17 } 18 };