一、56 合并区间

class Solution {
private:
static bool cmp(const vector<int>&a,const vector<int>&b){
return a[0]<b[0];
}
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>>result;//建议在新数组中操作,在原数组中操作会很复杂,既要添加合并后的区间还要删除原来的两个区间
if(intervals.size()==0)
return result;
sort(intervals.begin(),intervals.end(),cmp);
result.push_back(intervals[0]);
for(int i=1;i<intervals.size();i++){
if(intervals[i][0]<=result.back()[1]){//重叠
result.back()[1] = max(intervals[i][1],result.back()[1]);
}
else//没有重叠
result.push_back(intervals[i]);
}
return result;
}
};
二、 738 单调递增的数字

class Solution {
public:
int monotoneIncreasingDigits(int n) {
string str = to_string(n);
int flag = str.size();//从标记位置后都赋值9
for(int i = str.size()-1;i>0;i--){
if(str[i-1]>str[i]){
str[i-1]--;
flag = i;
}
}
for(int i=flag;i<str.size();i++){
str[i] = '9';
}
return stoi(str);
}
};