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) {
//int a[]=[0,0];
vector<string> ans;
string ans1;
int i=0;int j=0;
if(nums.size()==0) return ans;
while(j<=(nums.size()-1)){
if(j==(nums.size()-1)){
break;
}else if(nums[j+1]==nums[j]+1){
j++;
}else{
if(j==i){
ans1=to_string(nums[i]);
ans.push_back(ans1);
}else{
ans1=to_string(nums[i])+"->"+to_string(nums[j]);
ans.push_back(ans1);
}
j++;
i=j;
}
}
if(j==i){
ans1=to_string(nums[i]);
ans.push_back(ans1);
}else{
ans1=to_string(nums[i])+"->"+to_string(nums[j]);
ans.push_back(ans1);
}
return ans;
}
};