class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
int n=nums.size();
vector<string> ans;
int i=0;
while(i<n){
int j=i;
while (j + 1 < n && nums[j + 1]==nums[j]+1) j++;
if(i==j) ans.push_back(to_string(nums[i]));
else ans.push_back(to_string(nums[i])+"->"+to_string(nums[j]));
i=j+1;
}
return ans;
}
};
【注】while (j + 1 < n && nums[j + 1]==nums[j]+1) j++;不可改为
while (j + 1 < n && nums[j + 1]-nums[j]==1) j++;
否则会出现如下错误:
执行时出错信息:
runtime error: signed integer overflow: 2147483647 - -2147483647 cannot be represented in type ‘int’ (solution.cpp)
最后执行的输出:
[-2147483648,-2147483647,2147483647]