LeetCode上汇总区间,简单题还是很容易的记录下思路
整体思路是设置两个指针,然后对整个数组进行循环,因为数组是递增的,只需要前一位的值+1等于后一位的值的时候就能确认是满足需求。
这个时候结尾指针就向后一位,并且跳出当前循环
如果此时前一位的值+1不等于后一位的值的时候,是不满足需求的,结尾指针就停在当前位,然后把开始和结尾对应的值输出即可。
这里用到了let r = star === end ? `${star}`:`${star}->${end}`
这里叫模板字符串,用`(反引号)标识,用{}内直接输入变量,就可以输出变量,拼接会更方便
var summaryRanges = function(nums) {
// 创建开始和结束指针
let star = nums[0]
let end = 0
// 输出的数组
let res = []
// 保存数组长度
let len = nums.length
// 循环整个数组
for(let i = 0; i<len; i++) {
if(nums[i] + 1 === nums[i+1]) {
// 如果前一位数值+1等于后一位的值,就是满足条件
// 结尾的值就是当前的值
end = nums[i + 1]
// 跳出本轮循环
continue
} else {
// 如果不相等,那么结束字符就是当前字符
end = nums[i]
//要拼接字符串,并且放入结果数组
let r = star === end ? `${star}`:`${star}->${end}`
res.push(r)
// 开始字符就要向前一位
star = nums[i + 1]
}
}
return res
};