leetcode-303. Range Sum Query

来源:互联网 发布:简单的java代码 编辑:程序博客网 时间:2024/06/05 17:16

解题思路:


求解区间内元素的和。由于要多次查询,最朴素的方法是每次查询依次遍历集合中的所有元素并求和。但显然多次查询区间有交叉的话会重复计算某些新元素。由于区间是连续的,考虑保存中间的结果。下次查询就节省了很多重复计算。



实现代码:

class NumArray {public:    vector<int> arr;    NumArray(vector<int> nums) {        arr.push_back(0);        for(int i=0;i<nums.size();i++)            arr.push_back(nums[i]+arr[i]);    }        int sumRange(int i, int j) {        return arr[j+1]-arr[i];            }};