zoukankan      html  css  js  c++  java
  • leetcode-303-Range Sum Query

    题目描述:

    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:

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

     

    要完成的函数:

    class NumArray 
    {
        public:
            NumArray(vector<int> nums) 
            {
    
            }
    
            int sumRange(int i, int j) 
            {
                
            }
    };
    
    /**
     * Your NumArray object will be instantiated and called as such:
     * NumArray obj = new NumArray(nums);
     * int param_1 = obj.sumRange(i,j);
     */
    

    说明:

    1、这道题给了一个vector和两个index,i 和 j ,要求计算vector中的[ i , j ]之间的数的和。要求尽量少调用sumRange函数。

    2、这道题很容易,如果不要求少调用sumRange函数的话,我们常规思路,做一个循环知道总和就结束了这道题。

    但是现在要求少调用,比如一个初始化建立过程,后面跟着几百个调用sumRange的过程,那多次重复计算,还每次都是这几个数,那就有点浪费时间了。

    所以我们可以在初始化的时候,就计算好总和,后面频繁调用的时候就不用每次都重复计算。

    代码如下:(附详解)

    class NumArray 
    {
        public:
            NumArray(vector<int> nums) 
            {
                int sum2=0;
                for(int i=0;i<nums.size();i++)
                {
                    sum2+=nums[i];//从最开始到i这个位置,所有数的总和
                    sum1.push_back(sum2);//总和插入到sum1中
                }
            }
    
            int sumRange(int i, int j) 
            {
                return sum1[j]-sum1[i-1];//减一下就知道结果。
            }
        private:
            vector<int>sum1;//私有变量
    };
    

    上述代码的时间复杂度,初始化建立时O(n),sumRange的时间复杂度是O(1),大大减少了多次调用sumRange函数所需的时间。

    这有点像是训练一个神经网络模型,训练时花费很多时间,但实际要用时输入参数立马就知道结果。而普通的knn算法,实际要用时还是要遍历一遍所有数据,很浪费时间。

    上述代码实测28ms,beats 99.90% of cpp submissions。

  • 相关阅读:
    关于连接connection reset的问题
    Redis应用场景及缓存问题
    zookeeper集群及kafka集群搭建
    使用自定义注解和切面AOP实现Java程序增强
    Shell脚本控制docker容器启动顺序
    正则表达式匹配${key}并在Java中使用
    Redis基本数据结构之ZSet
    Redis基本数据结构之Set
    Redis基本数据结构之Hash
    Redis基本数据结构之List
  • 原文地址:https://www.cnblogs.com/chenjx85/p/9121457.html
Copyright © 2011-2022 走看看