【LeetCode刷题笔记-64 303. 区域和检索 - 数组不可变】

寒假放完了,回来也要为秋招做准备了。
不确定考不考研,毕竟太卷了,而且游戏方向的话除了图形学和算法感觉没有什么能考研的方向。如果能进入心仪的公司工作的话,在工作中学习应该也差不多。

那么来看看今天的题:
【LeetCode刷题笔记-64 303. 区域和检索 - 数组不可变】_第1张图片
今天得题目很简单。
我们很容易能想到,存储完数组以后,逐个遍历取元素再计算总和。但是这样子会多次检索计算。用到的优化方法也很简单。
简单的存储每个下标的前缀和,相减即可得到总和。
这样就可以将检索的时间复杂度降至O(1)
代码:(C++)


class NumArray {
public:
    vector<int> sums;

    NumArray(vector<int>& nums) {
        int n = nums.size();
        sums.resize(n + 1);
        for (int i = 0; i < n; i++) {
            sums[i + 1] = sums[i] + nums[i];
        }
    }

    int sumRange(int i, int j) {
        return sums[j + 1] - sums[i];
    }
};

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/range-sum-query-immutable/solution/qu-yu-he-jian-suo-shu-zu-bu-ke-bian-by-l-px41/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(算法,算法,leetcode,c++)