228. 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"].
使用范围的方式描述一个已排序的数组。
很直接的实现,使用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;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容