303. Range Sum Query - Immutable
2016-07-11 12:19
363 查看
题目:
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
Example:
Note:
You may assume that the array does not change.
There are many calls to sumRange function.
题意:
给定一个整数数组nums,找到给定下标i到j(i<=j)之间所有元素的和,包含边界。
note:
1、可以假定数组不会改变;
2、sumRange函数会大量的调用;
思路:
题目要求非常简单,只需要遍历累加i到j下标处的值即可。但是如果函数调用过多,会TLE(超时)。所以不能到需要使用的时候再去做遍历累加,可以维护一个数组,数组下标i处存储[0,i]的所有元素的累加和,当需要求i到j之间的累加和时,直接相减即可。即sumRange(i, j) = sum(j) - sum(i);
代码:C++版:28ms
class NumArray {
private:
vector<int> sums;
public:
NumArray(vector<int> &nums) {
sums.push_back(0);
for (auto n : nums) {
sums.push_back(sums.back() + n);
}
}
int sumRange(int i, int j) {
return sums[j+1] - sums[i];
}
};
// Your NumArray object will be instantiated and called as such:
// NumArray numArray(nums);
// numArray.sumRange(0, 1);
// numArray.sumRange(1, 2);
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:
You may assume that the array does not change.
There are many calls to sumRange function.
题意:
给定一个整数数组nums,找到给定下标i到j(i<=j)之间所有元素的和,包含边界。
note:
1、可以假定数组不会改变;
2、sumRange函数会大量的调用;
思路:
题目要求非常简单,只需要遍历累加i到j下标处的值即可。但是如果函数调用过多,会TLE(超时)。所以不能到需要使用的时候再去做遍历累加,可以维护一个数组,数组下标i处存储[0,i]的所有元素的累加和,当需要求i到j之间的累加和时,直接相减即可。即sumRange(i, j) = sum(j) - sum(i);
代码:C++版:28ms
class NumArray {
private:
vector<int> sums;
public:
NumArray(vector<int> &nums) {
sums.push_back(0);
for (auto n : nums) {
sums.push_back(sums.back() + n);
}
}
int sumRange(int i, int j) {
return sums[j+1] - sums[i];
}
};
// Your NumArray object will be instantiated and called as such:
// NumArray numArray(nums);
// numArray.sumRange(0, 1);
// numArray.sumRange(1, 2);
相关文章推荐
- 转载 GUID介绍
- Rabbitmq 学习笔记(二)队列
- Android多线程之handler+runOnUithread+view.post+handler.post
- 小心对待query_cache_size
- HDU 1242 Rescue
- 谈谈改变 UIAlertView 和 UIActionSheet 的颜色
- easyUI 级联下拉框(二)
- 解决开机提示“error:unknown filesystem grub rescue”的问题
- Java 实现Serializable接口要声明serialVersionUID的原因
- use delegate to update UI
- UITableViewCell去掉点击效果
- EasyUI Combobox 组合框
- 用StringBuilder连接MYSQL字段时被清空的问题
- UINavigationController转场不同背景颜色的设置异常(无push效果)
- UIImageView初始化
- vue.js-step-everthing-4
- iOS 设置UITabBar,背景颜色,默认图片,文字颜色,和选中颜色.
- Process 'command ...xxx.exe'' finished with non-zero exit value 1
- Android子线程中更新UI的3种方法
- org.jetbrains.android.uipreview.RenderingException: Failed to load the LayoutLib: com/android/layoutlib/bridge/Bridge : Unsupported major.minor version 52.0