LeetCode OJ:Summary Ranges(概括区间)
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"].
就是概括区间的方式把一个数组表示下来,例如123用1->3代替,自己写的很乱 ,维护两个指针就可以了:
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
int start = ;
stringstream str;
vector<string> ret;
int sz = nums.size();
if(sz == ) return ret;
if(sz == ){
str << nums[];
ret.push_back(str.str());
return ret;
}
//str << nums[0];
start = nums[];
for(int i = ; i < sz; ++i){
if(nums[i] == nums[i-] + ) continue;
if(start != nums[i - ]) //防止单个数字是一个区间的情况
str << start << "->" << nums[i - ];
else
str << start;
ret.push_back(str.str());
start = nums[i];
str.str("");
}
if(nums[sz - ] == nums[sz - ] + ){
str << start << "->" << nums[sz - ];
ret.push_back(str.str());
}else{
str << nums[sz - ];
ret.push_back(str.str());
}
return ret;
}
};
下面是用java写, 双指针, 比上面简单很多啊,代码如下:(注意,以后遇到双指针的问题,尽量不要用for循环,而应该使用while,自己移动指针,不容易出错(其实也是使用习惯问题))
public class Solution {
public List<String> summaryRanges(int[] nums) {
List<String> ret = new ArrayList<String>();
for(int p1 = 0, p2 = 0; p1 < nums.length; ++p1){
while(p1+1 < nums.length && nums[p1+1] == nums[p1]+1)
p1++;
if(p1 == p2)
ret.add(String.valueOf(nums[p1]));
else
ret.add(String.valueOf(nums[p2]) + "->" + String.valueOf(nums[p1]));
p2 = p1 + 1;//注意 ,这里p1不更新的原因是for循环还会为P1加上1, 当时没注意查了好久的bug
}
return ret;
}
}
LeetCode OJ:Summary Ranges(概括区间)的更多相关文章
- [LeetCode] 228. Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- [LeetCode] 163. Missing Ranges 缺失区间
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...
- [LeetCode] Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- LeetCode 228. Summary Ranges (总结区间)
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- [leetcode]228. Summary Ranges区间统计
Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...
- leetcode:Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- C#解leetcode 228. Summary Ranges Easy
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- Java for LeetCode 228 Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- LeetCode(228) Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- (easy)LeetCode 228.Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
随机推荐
- MapReduceTopK TreeMap
版权声明: https://blog.csdn.net/zhangxiango/article/details/33319281 MapReduce TopK统计加排序中介绍的TopK在mapredu ...
- 20170520 BADI增强学习
一.要求:Tcode:FF_5 导入数据运行时,产生财务凭证之前修改某些字段值.Exmp:FEBRE-VWEZWBKPF-XBLNRFEBEP-CHECTBSEG-ZUONR there is a b ...
- 通过js代码来制作数据库增删改查插件
代码流程 1.订制表头:table_config 2.订制显示内容: table_config,data_list 3.加载框: 图片,position:fixed 4.-字符串格式化 ...
- django 操作前端数据
django 利用json处理前端页面数据,FLASK当中也同样 def create_company(request):if request.user.is_superuser:custom_l ...
- 从yum源下载软件包
以下是从163源下载openstack-ocata版软件包的脚本: from html.parser import HTMLParser from urllib import request impo ...
- sql备份命令
--将SQL脚本赋值给变量 ) set @SqlBackupDataBase=N'BACKUP DATABASE dbname TO DISK = ''E:\DBBackup\dbname-'+ ), ...
- Linux软件包管理 RMP包管理
概述 RPM 包的命名一般都会遵守统一的命名规则,例如: httpd-2.2.15-15.el6.centos.1.i686.rpm 其中的各项代表的含义如下: httpd:软件包名. 2.2.15: ...
- [转]AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)
AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect) 1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充 ...
- awk中的常用关于处理字符串的函数
1.替换字符串中的某一部分. 函数:gensub(/rexpr/,"replace","g","string"),gensub返回一个新的字 ...
- poj 3617输出格式问题
注意是说的80个字母一行....