前言
刷题专栏到目前已经是第二十一篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天这道题,还是涉及数组相关知识,《区域和检索 - 数组不可变》。
不过此题和其他题不太一样,此题是要单独实现一个类,并且要通过调用这个类的方法来实现某些效果。
这种类型的题大多需要在构造函数中做一些基础的初始化处理。
至于这道题具体的一些操作是什么,就让我们一起来看一下吧。
算法题:区域和检索 - 数组不可变
今天的这道题目看似描述的文字很多,其实并不难理解。
只需要抓住一个重要的点,就是如何在类实例化时将部分数据初始化。
解决了这个问题,也就很好做出来了。
下面我们就可以来看一下相关代码的编写了。
代码展示
此次运行的代码如下,就是通过构造函数来初始化内部元素,然后通过其他方法来取出相应的值。
class NumArray { int[] sums; public NumArray(int[] nums) { int n = nums.length; sums = new int[n + 1]; for (int i = 0; i < n; i++) { sums[i + 1] = sums[i] + nums[i]; } } public int sumRange(int i, int j) { return sums[j + 1] - sums[i]; } } /** * Your NumArray object will be instantiated and called as such: * NumArray obj = new NumArray(nums); * int param_1 = obj.sumRange(left,right); */
代码执行结果
本次处理结果还是比较可以的,虽然内存消耗实为严重。就交给大家自己去完善一下了。
总结
这道题的不同之处在于给出了一个完整的类让大家去自己实现,那么为什么要给一个完整的类呢,必然就是要通过初始化来解决一下问题。
下回碰到这种题也就很容易解出来了。