Range Sum Query - Immutable

題目名稱
303. Range Sum Query - Immutable

描述
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:
1. You may assume that the array does not change.
2. There are many calls to sumRange function.

分析
  在類中定義一個vector —— sum,用來保存從從第一個值到當前位置的累加和。sum.size()=nums.size()+1,sum[0]=0,sum[1]=sum[0]+nums[0],sum[2]=sum[1]+nums[1]…

C++代碼

class NumArray {
public:
    NumArray(vector<int> &nums) :sum(nums.size()+1,0){
        if(!nums.empty()){ 
            for(int i=1;i<=nums.size();++i){
                sum[i] = sum[i-1]+nums[i-1];
            }
        }
    }

    int sumRange(int i, int j) {
        return sum[j+1]-sum[i];
    }
private:
    vector<int> sum;
};

測試用例

#include<iostream>
#include<vector>
using namespace std;

class NumArray {
public:
    NumArray(vector<int> &nums) :sum(nums.size()+1,0){
        if(!nums.empty()){ 
            for(int i=1;i<=nums.size();++i){
                sum[i] = sum[i-1]+nums[i-1];
            }
        }
        for(int i=0;i<sum.size();++i){
            cout<<sum[i]<<" ";
        }
        cout<<endl;
    }

    int sumRange(int i, int j) {
        return sum[j+1]-sum[i];
    }
private:
    vector<int> sum;
};

int main() {
    int a[] = {-2,0,3,-5,2,-1};
    vector<int> test(a,a+6);
    NumArray array(test);
    cout<<"array.sumRange(0,2)="<<array.sumRange(0,2)<<endl;
    cout<<"array.sumRange(2,5)="<<array.sumRange(2,5)<<endl;
    cout<<"array.sumRange(0,5)"<<array.sumRange(0,5)<<endl;
    return 0;
}

這裏寫圖片描述

發佈了129 篇原創文章 · 獲贊 45 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章