使用#标记数组的末尾

时间:2015-09-02 20:57:00

标签: javascript arrays string

我目前正在研究LeetCode编码问题的另一个用户代码。我的问题是关于他的代码的某些方面。这是the question的链接。

问题:

为什么此用户使用#标记数组的结尾?

在第二个if情况下,用户写道:

ans.push(nums[t] + '->' + (nums[i-1]))

现在,我理解这句话的作用。我的问题是:为什么这会产生["0->2",...]而不是[0"->"2,...]的输出?

var summaryRanges = function(nums) {
    var t = 0
    var ans = []
    nums.push('#')
    for(var i=1;i<nums.length;i++)
        if(nums[i]-nums[t] !== i-t){
            if(i-t>1)
                ans.push(nums[t]+'->'+(nums[i-1]))
            else
                ans.push(nums[t].toString())
            t = i
        }
    return ans
}

1 个答案:

答案 0 :(得分:0)

算法取决于nums[i]nums[t]之间的差异与it之间的差异不同。当发生这种情况时,算法会向输出添加更多内容。当最后一个范围只是一个数字时,这会创建一个特殊情况,因为这不能触发条件。

因此,哈希字符是填充以扩展数组以使算法工作,因此即使对于单个数字的结束范围,条件nums[i]-nums[t] !== i-t也将触发。它可以是任何字符串,只要它不是整数。