LeetCode-307. 区域和检索 - 数组可修改

mac2022-09-22  6

307. 区域和检索 - 数组可修改

难度中等80收藏分享切换为英文关注

通过次数

4,680

提交次数

9,083

题目描述

评论 (56)

题解(20)New

提交记录

给定一个整数数组  nums,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点。

update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。

示例:

Given nums = [1, 3, 5] sumRange(0, 2) -> 9 update(1, 2) sumRange(0, 2) -> 8

说明:

数组仅可以在 update 函数下进行修改。你可以假设 update 函数与 sumRange 函数的调用次数是均匀分布的。

 

 没用线段树,没用树状数组。写的特简单,虽然时间长也过了,先贴一个。

 线段树正在学习当中。

#include<iostream> #include<stdlib.h> #include<vector> using namespace std; /** * Your NumArray object will be instantiated and called as such: * NumArray* obj = new NumArray(nums); * obj->update(i,val); * int param_2 = obj->sumRange(i,j); */ class NumArray { public: NumArray(vector<int>& nums) { this->numArray = nums; } void update(int i, int val) { this->numArray[i] = val; } int sumRange(int i, int j) { ArraySum = 0; for (int start = i; start <= j; start++) { ArraySum += this->numArray[start]; } return ArraySum; } private: vector<int> numArray; int ArraySum; }; int mainx() { vector<int> nums = { 1,3,5 }; NumArray *ps = new NumArray(nums); cout << ps->sumRange(0, 2) << endl; ps->update(1, 2); cout << ps->sumRange(0, 2) << endl; system("pause"); return 0; }
最新回复(0)