jinxuan
6/28/2015 - 3:51 AM

http://www.lintcode.com/en/problem/interval-sum/#

/**
 * Definition of Interval:
 * classs Interval {
 *     int start, end;
 *     Interval(int start, int end) {
 *         this->start = start;
 *         this->end = end;
 *     }
 */
class Solution { 
public:
    /**
     *@param A, queries: Given an integer array and an query list
     *@return: The result list
     */
    vector<long long> intervalSum(vector<int> &A, vector<Interval> &queries) {
        // write your code here
        int n  = A.size();
        vector<long long> preSumSet;
        long long preSum = 0;
        preSumSet.push_back(0);
        for(int i = 0; i< n; i++){
            preSum += A[i];
            preSumSet.push_back(preSum);
        }
        preSumSet.push_back(preSum);
        //begins query.
        
        vector<long long> result;
        for(int i = 0; i < queries.size(); i++){
            result.push_back(preSumSet[queries[i].end+1] - preSumSet[queries[i].start]);
        }
        return result;
    }
};