题目:
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
我第一次实现的代码:
class NumArray {
private:
vector<int> myarry;
public:
NumArray(vector<int> &nums) {
vector<int>::iterator p = nums.begin();
while(p!=nums.end())
{
myarry.push_back(*p);
p++;
}
}
int sumRange(int i, int j) {
int sum;
for(;i<=j;i++)
{
sum+=myarry[i];
}
return sum;
}
};
完全没有多想,就是最简单的实现方法。将类的数组初始化为输入的数组然后相加求和。结果超时- -。
修改后:
class NumArray {
private:
vector<int> myarry;
public:
NumArray(vector<int> &nums) {
int sum = 0;
std::vector<int>::iterator p = nums.begin();
while(p!=nums.end())
{
sum = sum+*p;
myarry.push_back(sum);
p++;
}
}
int sumRange(int i, int j) {
int sum;
sum = myarry[j] - myarry[i-1];
return sum;
}
};
这一次我把类的数组不是进行输入数组的复制,而是初始化输入数组的前i项的和。这样的数组也就是辅助数组了。