Javascript 使用#标记数组的结尾
我目前正在研究另一个用户的代码,以解决LeetCode的一个编码问题。我的问题是关于他的代码的某些方面。这里有到的链接 问题: 为什么此用户使用Javascript 使用#标记数组的结尾,javascript,arrays,string,Javascript,Arrays,String,我目前正在研究另一个用户的代码,以解决LeetCode的一个编码问题。我的问题是关于他的代码的某些方面。这里有到的链接 问题: 为什么此用户使用#标记数组的结尾 在第二种if情况下,用户写入: ans.push(nums[t] + '->' + (nums[i-1])) 现在,我明白这句话的意思了。我的问题是:为什么这会产生[“0->2”,…]的输出,而不是[0”->“2,…” var summaryRanges = function(nums) { var t = 0
#
标记数组的结尾
在第二种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
}
var summaryRanges=函数(nums){
var t=0
var ans=[]
nums.push(“#”)
对于(var i=1;i1)
ans.push(nums[t]+'->'+(nums[i-1]))
其他的
ans.push(nums[t].toString())
t=i
}
返回ans
}
算法取决于nums[i]
和nums[t]
之间的差异与i
和t
之间的差异不同。当这种情况发生时,算法会向输出中添加更多内容。当最后一个范围仅为一个数字时,这会产生一种特殊情况,因为这无法触发该条件
因此,哈希字符被填充以扩展数组以使算法工作,因此条件
nums[i]-nums[t]!=i-t
即使在单个数字的结束范围内也会触发。它可以是任何字符串,只要它不是整数。nums[t]+'->'+(nums[i-1])
是字符串串联0+“X”=“0X”
不可能生成0”->“2
,因为这是一个语法错误。