标签:ret instant return str and range mil between size
#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:
以为很简单就做了,下面的方法超时啊啊啊,然后被超时虐了,因为很多调用。
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
标签:ret instant return str and range mil between size
原文地址:http://www.cnblogs.com/fengxw/p/6083950.html