您的位置:首页 > 其它

Summary Ranges

2016-05-25 11:27 330 查看
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)用两个标记,一个指示范围的起始下标,一个指示结束下标

(2)符合范围的情况是nums[i]+1==nums[++i]。这个时候将当前的范围的end标志向后移动。否则的话就是当前这个范围结束,以start和end为起始,构造题目给定string的格式,添加到最后的结果之中,然后重新指定start和end的数值

代码如下所示:

class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string>res;
if(nums.empty())
return res;
int start,end;
start=end=0;
int i=0;
while(i<nums.size()-1)
{
if(nums[i]+1==nums[++i])
end++;
else
{
res.push_back(range_format(nums[start],nums[end]));
start=end=i;
}
}
res.push_back(range_format(nums[start],nums[end]));
return res;

}
//构造需要的格式
string range_format(int start,int end)
{
char s[20];
if(start==end)
sprintf(s,"%d",start);
else
sprintf(s,"%d->%d",start,end);
return string(s);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: