leetcode_303. Range Sum Query
来源:互联网 发布:centos 7 乱码 编辑:程序博客网 时间:2024/05/25 18:12
题目:
Given an integer array nums, find the sum of the elements between indicesi and j (i ≤ j), inclusive.
Example:
Given nums = [-2, 0, 3, -5, 2, -1]sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3在动态规划的题目里选的一道题。
给一个array,返回的是i到j相加的结果。
提示是:
/** * Your NumArray object will be instantiated and called as such: * NumArray obj = new NumArray(nums); * int param_1 = obj.sumRange(i,j); */
就是要写一个类,里面有变量是存了这个array,用这个类的sumRange方法返回这个变量的i到j的和。
咦,这个和动态规划有个啥关系呢。。直接加复杂度不就是O(n)了吗已经。
于是就很快写了代码,直接就通过了:
class NumArray {public: NumArray(vector<int> nums) { numb = nums; } int sumRange(int i, int j) { int sum = 0; for(int m = i; m <= j; m++){ sum+=numb[m]; } return sum; } vector<int> numb;};
既然是动态规划里的题目,按道理肯定可以用动态规划的方法。看了一下答案解析,哦原来还可以这样。没有强调NumArray里面要存这个num,那他可以存前m项的和。如果要i到j的和,就用第j个减第i个。是简单的动态规划,而且调用这个函数的复杂度更低了。
代码:
class NumArray {public: NumArray(vector<int> &nums) { accu.push_back(0); for (int num : nums) accu.push_back(accu.back() + num); } int sumRange(int i, int j) { return accu[j + 1] - accu[i]; }private: vector<int> accu;};
0 0
- leetcode_303. Range Sum Query
- leetcode_303. Range Sum Query - Immutable 求区间和
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- [Leetcode]Range Sum Query
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- 303,Range Sum Query
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- Range Sum Query - Mutable
- Range Sum Query - Immutable
- Range Sum Query - Immutable
- Range Sum Query - Javacript
- Range Sum Query - Immutable
- C++中std::reverse和std::reverse_copy的使用
- ubuntu16.04输入密码后登入黑屏
- scrapy 登录
- R语言向量_NA与NULL值
- 用vue手脚架生成的项目修.vue文件后,保存编译报错,缺少2个空格
- leetcode_303. Range Sum Query
- 【Bzoj3668】起床困难综合症
- 网络信息服务 (NIS/YP)
- Java开发环境搭建
- Javascript中的windows窗口对象
- Spark源码系列(一)spark-submit提交作业过程
- BST 遍历
- string的使用uva-1593 代码对齐
- BaseActivity:统一编写共有逻辑