题目
思路
双指针,找到满足题意的连续闭区间 [i,j],找到后会有两种情况,i==j 时 输出一个元素;i!= j 时输出一个区间;
其实最后一个元素就两种情况:
1.最后一个元素单独是一个区间;
2.最后一个元素包含在前一个区间内;
代码
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
int n = nums.size(), i = 0, j = 0;
vector<string> ans;
//下标j要满足的条件,不能越界
while(j < n){
string temp = "";
//先判断j + 1会不会越界
while(j < n - 1 && nums[j] + 1 == nums[j+1]) j ++;
if(i != j) temp = to_string(nums[i]) + "->" + to_string(nums[j]);
else temp = to_string(nums[i]);
ans.push_back(temp);
i = ++j;
}
return ans;
}
};