这道题不算难,给出一个没有重复数字的数组,要求把这个数组写成区间的形式。
我定义一个start和end,表示找到的每个区间的开头和结尾下标。固定start之后让end从start+1开始往后找连续的数。遇到不是连续的数就停下,end回退一位确定了这个区间的结尾。如果发现start == end,那么把当前的这个数转换成字符串加入结果集。否则写成区间的形式加入结果集。
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int start = 0, end = 0, n = nums.size();
while(start < n && end < n){
for(end = start+1; end < n; ++end){
if(nums[end] - nums[end - 1] != 1){
break;
}
}
end--;
if(end == start) res.push_back(to_string(nums[end]));
else{
string s = to_string(nums[start]) + "->" + to_string(nums[end]);
res.push_back(s);
}
start = end + 1;
}
return res;
}
};