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);
}
};
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);
}
};
相关文章推荐
- 开发板上syslog使用方法小结
- 防火墙iptable的原理
- angular-模块-启动
- Java 8新的时间日期库
- [ASP.NET MVC]Entity Framework框架之CodeFirst数据迁移
- c++指针初识
- Record is locked by another user --Oracle行锁解锁
- Hexo+Github Pages如何搭建并异地管理Blog
- maven概述项目周期阶段
- Bootstrap使用Javascript显示模态框后页面上移
- OUVa 232 Crossword answer
- Realm 使用教程
- 利用Code128字体将文本转换为code128条形码
- 3019
- 2.1
- 检查Linux服务器性能
- 编程风格之——版权申明
- syslog-ng详细安装配置
- C++字面值常量
- Ubuntu下安装Qt全部过程