给定一个 无重复元素 的 有序 整数数组 nums 。

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

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

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

    示例 1:
    输入:nums = [0,1,2,4,5,7]
    输出:[“0->2”,”4->5”,”7”]
    解释:区间范围是:
    [0,2] —> “0->2”
    [4,5] —> “4->5”
    [7,7] —> “7”
    示例 2:
    输入:nums = [0,2,3,4,6,8,9]
    输出:[“0”,”2->4”,”6”,”8->9”]
    解释:区间范围是:
    [0,0] —> “0”
    [2,4] —> “2->4”
    [6,6] —> “6”
    [8,9] —> “8->9”

    1. /**
    2. * @param {number[]} nums
    3. * @return {string[]}
    4. */
    5. var summaryRanges = function (nums) {
    6. const ret = [];
    7. let i = 0;
    8. const len = nums.length;
    9. // 维护大小两个值,始终满足low <= high
    10. while (i < len) {
    11. const low = i;
    12. i++;
    13. // 间隔为一 跳过
    14. while (i < len && nums[i] === nums[i - 1] + 1) {
    15. i++;
    16. }
    17. const high = i - 1;
    18. const temp = ['' + nums[low]];
    19. if (low < high) {
    20. temp.push('->');
    21. temp.push('' + nums[high]);
    22. }
    23. ret.push(temp.join(''));
    24. }
    25. return ret
    26. };

    image.png