Range Sum Query - Immutable

来源:互联网 发布:服装cad软件排名 编辑:程序博客网 时间:2024/04/28 13:14

题目链接

原题

Given an integer array nums, find the sum of theelements between indices i and j (i ≤ j), inclusive.Example:Given nums = [-2, 0, 3, -5, 2, -1]sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3Note:You may assume that the array does not change.There are many calls to sumRange function.

思路

动态规划.

code

class NumArray {public:    NumArray(vector<int> &nums) {        if(!nums_.empty()) {            nums_.clear();        }        if(!sums_.empty()) {            sums_.clear();        }        if(nums.empty()) return;        for(int i = 0; i < nums.size(); i++) {            nums_.push_back(nums[i]);            // if(i == 0) {            //     sums_.push_back(nums_[i]);            // } else {            //     sums_.push_back(nums_[i] + sums_[i - 1]);            // }        }        sums_.push_back(nums_[0]);        for(int i = 1; i < nums.size(); i++) {            sums_.push_back(nums_[i] + sums_[i - 1]);        }    }    int sumRange(int i, int j) {        int sum = 0;        if(j < i) std::swap(i, j);        // for(int idx = i; idx <= j; idx++) {        //     sum += nums_[idx];        // }        return sums_[j] - sums_[i] + nums_[i];        return sum;    }private:    vector<int> nums_;    vector<int> sums_;};// Your NumArray object will be instantiated and called as such:// NumArray numArray(nums);// numArray.sumRange(0, 1);// numArray.sumRange(1, 2);
0 0
原创粉丝点击