题目:
Given a sorted integer array without duplicates, return the summary of its ranges.
For example, given [0,1,2,4,5,7], return [“0->2”,”4->5”,”7”].
题意:
排序数组,不包含重复元素。返回每一个区间。区间就是元素连续相连的。
思路:
比较简单就是从前往后扫描,如果下一个元素不是当前元素的值加1,那么就存入该区间。
代码如下:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
int size = nums.size();
vector<string> result;
if(size == 0)return result;
int first = nums[0];
for(int i = 0; i < size - 1; i++)
{
if(nums[i + 1] != nums[i] + 1)
{
stringstream ss;
ss<<first;
if(nums[i] != first)ss<<"->"<<nums[i];
result.push_back(ss.str());
first = nums[i + 1];
}
}
stringstream ss;
ss<<first;
if(nums[size - 1] != first)ss<<"->"<<nums[size - 1];
result.push_back(ss.str());
return result;
}
};