题目
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”].
给一个数组,求里面的自然递增序列
就是直接判断是否是上一个+1
- 直接for,则最后一个递增区间需要在for外面再写上去,偷懒,在最后再放一个数,完毕后删除
#include<iostream>
#include<vector>
#include <map>
#include <set>
#include<stack>
#include <algorithm>
#include <sstream>
using namespace std;
const int N=0;
string to_string(int n)
{
stringstream ss;
ss << n;
return ss.str();
}
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> range(0);
if( nums.size() == 0 ){
return range;
}
vector<int>::iterator iter = nums.end() - 1;
if( *iter == -1 ){
nums.push_back(2);
}else{
nums.push_back(0);
}
iter = nums.begin();
for (vector<int>::iterator iter1 = nums.begin(); iter1 != nums.end() - 1; ++iter1){
if( *iter1 + 1 != *(iter1 + 1) ){
string rangeString = (iter == iter1)?(to_string( *iter)):(to_string(*iter)+"->"+to_string(*iter1));
range.push_back(rangeString);
iter = iter1 + 1;
}
}
return range;
}
};