给定一个无重复元素的有序整数数组 n u m s nums nums 。
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说, n u m s nums nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 n u m s nums nums 的数字 x x x 。
列表中的每个区间范围 [ a , b ] [a,b] [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"
示例 3:
输入:nums = []
输出:[]
示例 4:
输入:nums = [-1]
输出:["-1"]
示例 5:
输入:nums = [0]
输出:["0"]
提示:
0
<
=
n
u
m
s
.
l
e
n
g
t
h
<
=
20
0 <= nums.length <= 20
0<=nums.length<=20
−
2
3
1
<
=
n
u
m
s
[
i
]
<
=
2
31
−
1
-2^31 <= nums[i] <= 2^{31} - 1
−231<=nums[i]<=231−1
n
u
m
s
nums
nums 中的所有值都 互不相同
n
u
m
s
nums
nums 按升序排列
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string>res;
int i=0;
int n=nums.size();
while (i<n){
int l=i;
i++;
while (i<n&&nums[i]==nums[i-1]+1){
i++;
}
int r=i-1;
string tmp=to_string(nums[l]);
if (l<r){
tmp+="->";
tmp+=to_string(nums[r]);
}
res.push_back(tmp);
}
return res;
}
};