class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end());
vector<vector<int>> out;
for(int i = 0; i < intervals.size()-1; ++i){
if(intervals[i][1] >= intervals[i+1][0]){
intervals[i+1][0] = intervals[i][0];
intervals[i+1][1] = max(intervals[i][1], intervals[i+1][1]);
}else{
out.push_back(intervals[i]);
}
}
out.push_back(intervals[intervals.size()-1]);
return out;
}
};
class Solution {
public:
int monotoneIncreasingDigits(int n) {
if(n<10){return n;}
int out = 0;
vector<int> vn;
while(n!=0){
vn.push_back(n%10);
n = n/10;
}
int max = 10;
int st = 0;
for(int i=0; i<vn.size(); i++){
if(vn[i] <= max){
max = vn[i];
continue;
}else{
vn[i]--;
max = vn[i];
for(int j=i-1; j>=st; j--){
vn[j] = 9;
}
st = i-1;
}
}
for(int i=0; i<vn.size(); ++i){
out += vn[i] * pow(10, i);
}
return out;
}
};