首页 > 代码库 > Leetcode-303 Range Sum Query - Immutable
Leetcode-303 Range Sum Query - Immutable
#303. Range Sum Query - Immutable
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
Example:
Given nums = [-2, 0, 3, -5, 2, -1] sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3
Note:
- You may assume that the array does not change.
- There are many calls to sumRange function.
以为很简单就做了,下面的方法超时啊啊啊,然后被超时虐了,因为很多调用。
class NumArray { public: NumArray(vector<int> &nums) { num=nums; } int sumRange(int i, int j) { int sum=0; while(i<=j) { sum+=num[i]; } return sum; } private: vector<int> num; }; // Your NumArray object will be instantiated and called as such: // NumArray numArray(nums); // numArray.sumRange(0, 1); // numArray.sumRange(1, 2);
只好换种思路,num[i]存的是nums的前i-1个元素之和,反正前j个元素和减掉前i-1个元素和等于i到j的和。
class NumArray { public: NumArray(vector<int> &nums) { num.push_back(0); for(int i=1;i<=nums.size();i++) { num.push_back(num[i-1]+nums[i-1]); } } int sumRange(int i, int j) { return num[j+1]-num[i]; } private: vector<int> num; }; // Your NumArray object will be instantiated and called as such: // NumArray numArray(nums); // numArray.sumRange(0, 1); // numArray.sumRange(1, 2);
Leetcode-303 Range Sum Query - Immutable
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。