汇总区间
题目
给定一个无重复元素的有序整数数组, 返回数组区间范围的汇总.
示例
输入: [0, 1, 2, 4, 5, 7]
输出: ['0->2', '4->5', '7']
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间; 7 可组成一个连续的区间
题解
- 设置两个指针
i = 0
,j = 1
- 如果
nums[j] - nums[i] !== j - i
, 那一定遇到了不是连续子串的临界值- 如果
i === j - 1
, 也就是"连续子串"只有一个元素 - 否则通过
->
来连接一个区间
- 如果
- 保证每次循环
j
都往前走一个步
/**
* @param {number[]} nums
* @return {string[]}
*/
var summaryRanges = function (nums) {
const n = nums.length
const res = []
let i = 0
let j = 1
while (j <= n) {
if (nums[j] - nums[i] !== j - i) {
if (i === j - 1) {
res.push(nums[i].toString())
} else {
res.push(`${nums[i]}->${nums[j - 1]}`)
}
i = j
}
j++
}
return res
}