• Leetcode-303 Range Sum Query


    #303.   Range Sum Query - Immutable         

    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) -> 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) {
            num=nums;
        }
    
        int sumRange(int i, int j) {
            int sum=0;
            while(i<=j)
            {
                sum+=num[i];
            }
            return sum;
        }
    private:
       vector<int> num;
    };
    
    
    // Your NumArray object will be instantiated and called as such:
    // NumArray numArray(nums);
    // numArray.sumRange(0, 1);
    // numArray.sumRange(1, 2);

    只好换种思路,num[i]存的是nums的前i-1个元素之和,反正前j个元素和减掉前i-1个元素和等于i到j的和。

    class NumArray {
    public:
        NumArray(vector<int> &nums) {
            num.push_back(0);
            for(int i=1;i<=nums.size();i++)
            {
                num.push_back(num[i-1]+nums[i-1]);
            }
        }
    
        int sumRange(int i, int j) {
            return num[j+1]-num[i];
        }
    private:
       vector<int> num;
    };
    
    
    // Your NumArray object will be instantiated and called as such:
    // NumArray numArray(nums);
    // numArray.sumRange(0, 1);
    // numArray.sumRange(1, 2);
  • 相关阅读:
    预编译对象四部区
    闭包
    使用charCodeAt计算字节数
    对象增删改查
    nacos
    Maven不能不关注啦
    jvm造轮子
    ubuntu 20.0 安装 mongodb
    ubuntu 安装 mongodb
    腾讯云服务器如何使用root账号登录,不能使用root登录怎么办
  • 原文地址:https://www.cnblogs.com/fengxw/p/6083950.html
Copyright © 2020-2023  润新知