AC Code
自己做出来的,代码写的很烂,但是也浅浅记录一下叭,下面有看答案思路写出来的双指针代码
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> ans;
int n = nums.size();
if(n == 1) ans.emplace_back(to_string(nums[0]));
int i = 1;
int front = 0;
while( i < n){
if(nums[i - 1] + 1 != nums[i]){
string temp = "";
if(front == i - 1){
temp = to_string(nums[front]);
}
else{
temp = to_string(nums[front]) + "->" + to_string(nums[i-1]);
}
front = i;
ans.emplace_back(temp);
}
if(i == n - 1){
string temp = "";
if(front == i){
temp = to_string(nums[front]);
}
else{
temp = to_string(nums[front]) + "->" + to_string(nums[i]);
}
ans.emplace_back(temp);
}
i++;
}
return ans;
}
};
双指针
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> ans;
int n = nums.size();
int i = 0;
while( i < n){
int left = i;
i++;
while(i < n && nums[i - 1] + 1 == nums[i]){
i++;
}
int right = i - 1;
string tmp = to_string(nums[left]);
if(left < right) tmp += "->" + to_string(nums[right]);
ans.emplace_back(tmp);
}
return ans;
}
};