Leecode 228. 汇总区间 C++

题目描述

给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。
示例 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> res;
        int start=0;
        int i=0;
        while(i<nums.size())
        {
            if(i+1<nums.size() && nums[i]+1==nums[i+1])
            {
                ++i;
            }
            else if(i-start>0)
            {
                string temp;
                temp+=to_string(nums[start]);
                temp+="->";
                temp+=to_string(nums[i]);
                res.push_back(temp);
                start=i+1;
                i++;
            }
            else
            {
                string temp;
                temp+=to_string(nums[i]);
                res.push_back(temp);
                start=i+1;
                ++i;
            }
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/yuanliang861/article/details/89297872