题目描述
给定一个无重复元素有序整数区间数组 arr
返回恰好覆盖数组中所有数字的 最小有序 区间范围列表
也就是说,arr的每个元素都恰好被某个区间范围锁覆盖,并且不存在属于某个范围但不属于arr的数字x
输出格式如下:对于每个子序列[a,b]
if a!=b “a->b”
if a==b “a”
对于数组 0 2 3 4 6 8 9
[“0”,“2->4”,“6”,“8->9”]
题目解析:
std::vector<std::string> SummaryRanges(int *arr,int len)
{
std::vector<std::string> vec;
int i = 0;
while (i < len)
{
int low = i;
++i;
while(i < len && arr[i] == 1 + arr[i-1]); i++;
int high = i-1;
std::string s = std::to_string(arr[low]);
if(low < high)
{
s += "->" + std::to_string(arr[low]);
}
vec.push_back(std::move(s));
}
return vec;
}