Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].
问题分析:题目目标就是找出给定排序数组中的连续段,分段输出。解决这个问题我们只需要找出分段点就可以了,也就是后面一个元素减去前面一个元素的差不等于一即可。代码实现比较简单,具体代码如下:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> ranges;
if(nums.size()==0) return ranges;
int begin=nums[0];
int end=nums[0];
int index=0;
for(int i=1;i<nums.size();i++){
if(nums[i]==nums[index]+1){
index++;
end=nums[i];
}
else{
if(begin==end){
ranges.push_back(to_string(begin));
}
else{
string ss="";
ss+=to_string(begin);
ss+="->";
ss+=to_string(end);
ranges.push_back(ss);
}
begin=nums[i];
end=nums[i];
index=i;
}
}
if(begin==end){
ranges.push_back(to_string(begin));
}
else{
string ss="";
ss+=to_string(begin);
ss+="->";
ss+=to_string(nums[nums.size()-1]);
ranges.push_back(ss);
}
return ranges;
}
};