您的位置:首页 > 产品设计 > UI/UE

leetcode 303. Range Sum Query - Immutable

2016-01-01 19:24 399 查看
原题:

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++代码

[code]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++类的定义,各种极限边界数据的处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: