Leetcode题目: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:
題目解答:這個題目說了,會反復的求一段數字的和,但是默認數組不變。這么說來,就是求和的復雜度就是主要的復雜度。那么可以先把它們存起來,然后再求得時候,直接把結果返回來。需要注意的是,求[2,5]的和就是求[0,5]的和減去[0,2]的和,再加上[2]這個位置的值。
代碼如下:
class NumArray {
public:
??? NumArray(vector<int> &nums):nums(nums) {
??????? int sum = 0;
??????? for(int i = 0;i < nums.size();i++)
??????? {
??????????? sum += nums[i];
??????????? sums.push_back(sum);
??????? }
??? }
??? int sumRange(int i, int j) {
??????? if((i > j) || (i >= nums.size()) || (j >= nums.size()))
??????????? return 0;
??????? return sums[j] - sums[i] + nums[i];
??? }
private:
??? vector<int> sums;
??? vector<int> &nums;
};
// Your NumArray object will be instantiated and called as such:
// NumArray numArray(nums);
// numArray.sumRange(0, 1);
// numArray.sumRange(1, 2);
轉載于:https://www.cnblogs.com/CodingGirl121/p/5477231.html
總結
以上是生活随笔為你收集整理的Leetcode题目:Range Sum Query - Immutable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础11
- 下一篇: 如何写出《黄焖鸡米饭是怎么火起来的》这样