汇总区间

给定一个 无重复元素 的 有序 整数数组 nums 。
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围 [a,b] 应该按如下格式输出:

  • “a->b” ,如果 a != b

  • “a” ,如果 a == b

  • 输入:nums = [0,1,2,4,5,7]

  • 输出:[“0->2”,”4->5”,”7”]

  • 解释:区间范围是:

  • [0,2] –> “0->2”

  • [4,5] –> “4->5”

  • [7,7] –> “7”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let summaryRanges = function(nums) {
const len = nums.length;
const ans = [];
let i = 0;
while (i < len) {
let j = i;

// 找到从 i 开始连续的最后一位
while (j + 1 < len && nums[j] + 1 === nums[j + 1]) j++;

// 拼接
if (j === i) ans.push(`${nums[i]}`);
else ans.push(`${nums[i]}->${nums[j]}`);

i = j + 1;
}
return ans;
};