2

我正在解决leetcode网站上的问题,发现了一个我不知道如何解决的问题。他们是这样解释的:

给定一个整数数组 nums,求索引 i 和 j (i ≤ j) 之间的元素之和,包括索引 i 和 j (i ≤ j)。

示例:给定 nums = [-2, 0, 3, -5, 2, -1]

sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3 注意:你可以假设数组没有改变。对 sumRange 函数有很多调用。

这是代码:

/**
 * @param {number[]} nums
 */
var NumArray = function(nums) {
   this.nums = nums;
};

/** 
 * @param {number} i 
 * @param {number} j
 * @return {number}
 */
NumArray.prototype.sumRange = function(i, j) {
    let sum = 0;
    for (i; i <= j; i++) {
        sum += this[i];
    }
    return sum;
};

/** 
 * Your NumArray object will be instantiated and called as such:
 * var obj = Object.create(NumArray).createNew(nums)
 * var param_1 = obj.sumRange(i,j)
 */

我不知道该怎么做,或者这部分到底意味着什么:

var obj = Object.create(NumArray).createNew(nums)

我是否想创建一个属性 createNew 来接受 mums 和 creats 以及数组,如果 nums 已经作为数组发送,我为什么要这样做?

4

1 回答 1

1

这部分到底是什么意思:

var obj = Object.create(NumArray).createNew(nums)

他们把它搞砸了,意思很简单var obj = new NumArray(nums)(对于像 JS 这样的函数式语言来说,这仍然是不必要的复杂)。

显然,描述在某个时候被无能的人更改了,因为讨论部分中所有旧的 JavaScript 提交(例如这个)在评论中都有正确的代码。

于 2017-12-07T15:20:54.427 回答