给定一个 无重复元素 的 有序 整数数组 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;}
};