228. 汇总区间

题目描述

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例 1:
输入: [0,1,2,4,5,7]
输出: ["0->2","4->5","7"]
解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。
示例 2:

输入: [0,2,3,4,6,8,9]
输出: ["0","2->4","6","8->9"]
解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。

代码实现

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {

        vector<string> ret;
        int n = nums.size();
        if(n == 0)
            return ret;
        if(n == 1)
        {                //在Java中对应的方法为.toString()
            ret.push_back(to_string(nums[0]));
            return ret;
        }

        int start = 0;
        int end = 0;
        for(int i = 1;i < n;i++)//流式处理
        {   //一个区间是否完成,由后面的元素决定
            if(nums[i]!=nums[end]+1)
            {   
                if(start ==end)
                    ret.push_back(to_string(nums[start]));
                else
                    ret.push_back(to_string(nums[start])+"->"+to_string(nums[end]));
                start = i;   
                end = i;       
            }
            end = i;
        }
        if(start == end)
            ret.push_back(to_string(nums[start]));
        else
            ret.push_back(to_string(nums[start])+"->"+to_string(nums[end]));
        return ret;               
    }
};

posted on 2021-04-05 08:46  朴素贝叶斯  阅读(31)  评论(0编辑  收藏  举报

导航