思路:一次线性扫描,用双指针/滑动窗口合并连续段。维护当前段的起点 start,向后检查相邻元素是否满足 nums[i+1] == nums[i] + 1。若连续则扩展,直到不连续为止,将该段输出为:
start == end:输出单点 "a""a->b"相关算法:双指针 / 扫描线(线性遍历合并连续区间)。
实现要点:
给定一个无需复元素的有序整数数组,将其转化为区间表示,也就是说连续的数字收拢成一个区间,和两边不连续的数字单独列出。
区间表示如下“ a−>b ”,例如“2−>3”“−4−>7”
单个数字表示如下“a”,例如“6”
一个无重复元素的有序整数数组,以 [] 包围,逗号隔开
一个字符串数组,每个元素或者是一个区间或者是一个单独数字
输入
[0,1,2,8,9,11]
输出
[0->2,8->9,11]
输入
[-4,-3,0,1,4,5,7]
输出
[-4->-3,0->1,4->5,7]