自学内容网 自学内容网

LeetCode面试经典150题|228.汇总区间

给定一个  无重复元素 的 有序 整数数组 nums 。

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围 [a,b] 应该按如下格式输出:

从头往后遍历,假如当前元素比之前区间里的最大值相差超过2,说明这个元素不应该合并。

这个时候结束一个区间的合并,然后把当前的元素放到新区间里,接着探索下一轮可以合并的元素。

class Solution {
public:
    vector<string> summaryRanges(vector<int>& nums) {
        int m=nums[0];
        int mm=nums[0];
        vector<string>s;
        int flag=0;
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]>mm+1)
            {
                string g=to_string(m);
                string gg=to_string(mm);
                if(m==mm)s.push_back(to_string(nums[i-1]));
                else s.push_back(g+"->"+gg);
                m=nums[i];mm=nums[i];
            }
            else {
                m=min(m,nums[i]);
                mm=max(m,nums[i]);
                if(i==nums.size()-1)flag=1;
            }
        }
        
            string g=to_string(m);
                string gg=to_string(mm);
                if(m==mm)s.push_back(to_string(m));
                else s.push_back(g+"->"+gg);
        
        return s;
    }
};


原文地址:https://blog.csdn.net/m0_73366752/article/details/143704703

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!