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"].
使用范围的方式描述一个已排序的数组。
很直接的实现,使用begin来标记当前范围的起点,每遍历到一个位置就看下一个是不是比当前只增1,是的话index继续后移begin不变,不是的话说明当前范围已经结束,输出一个结果,begin和index都指向下一个位置,找新的范围:
var summaryRanges = function(nums) {
var num = nums.length;
if (num===0) return [];
var res = [];
var begin = 0;
var index = 0;
while(index+1<num) {
if (nums[index+1]-nums[index]!==1) {
if (begin === index) {
res.push("" + nums[index]);
} else {
res.push(nums[begin] + '->' + nums[index]);
}
begin = index + 1;
}
index++;
}
if (begin === index) {
res.push("" + nums[index]);
} else {
res.push(nums[begin] + '->' + nums[index]);
}
return res;
};
网友评论