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)!