分析
枚举区间每个值,设一个区间左边界l,区间右边界r,如果以1为单位递增就更新r,否则就将区间变成字符串加入答案数组,然后将l和r的值赋值为当前nums[i]。
最后不要忘记把最后一个元素为右边界的区间加入数组。
C++ 代码
class Solution {
public:
vector<string> ans;
vector<string> summaryRanges(vector<int>& nums) {
if(nums.size()<1) return ans;
int n=nums.size();
long int l=nums[0],r=nums[0]; //注意设置为long int,不然会爆int
for(int i=1;i<n;i++)
{
if(nums[i]-r==1) //区间连续,更新r
{
r=nums[i];
}
else{
string temp;
if(l==r)
temp=to_string(l);
else{
temp=to_string(l) + "->" + to_string(r);
}
ans.push_back(temp);
l=r=nums[i];
}
}
//最后一个元素为右边界的区间加入数组
if(l==r) ans.push_back(to_string(l));
else ans.push_back(to_string(l) + "->" + to_string(r));
return ans;
}
};