原题:
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.
题目大意:
给你一个数组,让计算区间i到j之间的和。
c++代码
class NumArray {
private:
vector<int> ar;
public:
NumArray(vector<int> &nums) {
int n=nums.size();
ar.resize(n,0);
int s=0;
for(int i=0;i<n;i++)
{
ar[i]=s+nums[i];
s=ar[i];
}
}
int sumRange(int i, int j) {
if(i==0)
return ar[j];
else
return ar[j]-ar[i-1];
}
};
思路:
第一次在leetcode上交题,这题没把我累死。也侧面反映出我代码功底不够,思路不够严谨。
leetcode上面的代码去都是给定一个类,让你去完成类中的成员和函数的定义,交了好几次都re,最后还是看讨论区里别人的代码过的! =_=
先交了几次,结果都是编译错误 =_=
刚看到这题的时候感觉很简单嘛,直接在循环里i到j求和就行了么。结果超时= _=
后来知道一个数据里面有多个查询区间,考虑到用每个数组累加前面的和的形式,结果re=_=
检查代码发现有i=0和i==j的形式,改吧改吧提交后,结果还是re!!=_=
看discuss里别人提交的代码,类里面的成员要初始化。初始化了以后提交,依旧re=_=
看给我弹出来的错误,数据里面居然有这么个玩意! [] 这是啥意思? 哦,原来是一组空的数据,也就是告诉我数据为空的时候也要处理一下。
照着讨论区里一哥们的代码敲了一遍,过了 5555
另外,这题真好~~ 考察了小技巧,c++类的定义,各种极限边界数据的处理