博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode题目:Range Sum Query - Immutable
阅读量:6653 次
发布时间:2019-06-25

本文共 988 字,大约阅读时间需要 3 分钟。

题目:

Given an integer array nums, find the sum of the elements between indices i and j (ij), inclusive.

Example:

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

 

Note:

  1. You may assume that the array does not change.
  2. There are many calls to sumRange function.

题目解答:这个题目说了,会反复的求一段数字的和,但是默认数组不变。这么说来,就是求和的复杂度就是主要的复杂度。那么可以先把它们存起来,然后再求得时候,直接把结果返回来。需要注意的是,求[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

你可能感兴趣的文章
invalid application of ‘sizeof’ to incomplete type
查看>>
去掉表的identity属性
查看>>
libGDX游戏的生命周期
查看>>
即时通讯软件设计(一)
查看>>
innobackupex 全备、增备脚本
查看>>
关于2017年
查看>>
进程的通信方式
查看>>
vim编辑器命令
查看>>
ES6初探,变量的声明
查看>>
大学里如何学习 ?(转载自 Zachary.XiaoZhen - 梦想的天空)
查看>>
Unity中的DestroyImmediate
查看>>
内核ioctl函数的cmd宏参数
查看>>
[转] 以 async/await 为例,说明 babel 插件怎么搭
查看>>
6.日志的使用
查看>>
[出出面试题]JAVA开发
查看>>
《斯坦福大学:编程范式》第三节2:大端与小端、最小寻址单位
查看>>
LNMP搭建(CentOS 6.3+Nginx 1.2.0+PHP 5.3.15(fpm)+ MySQL 5.5.35)
查看>>
kmp算法
查看>>
010-对象——构造方法__construct析构方法__destruct使用方法 PHP重写与重载
查看>>
第一课——git的简介和基本使用
查看>>