思路:
用两个指针指定两个位置,如果位移超过了1说明存在一个区间。否则只有一个数。
每个指针至多遍历一遍,所以使O(n)的
代码:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int n = nums.size();
if(n == 1) return {to_string(nums[0])};
for(int i = 0;i < n;){
int j = i + 1;
int cur = nums[i];
string path;
path += to_string(cur);
while(j < n && nums[j] == cur + 1) cur++,j++;
if(j - i > 1) path = path + '-' + '>' + to_string(cur);
res.push_back(path);
i = j;
}
return res;
}
};
评论区