435. 无重叠区间
class Solution {
public:
static bool cmp(const vector<int>&a, const vector<int>&b){
return a[0]<b[0];
}
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(), cmp);
int num = 0;
for(int i=0; i<intervals.size()-1; i++){
if(intervals[i][1]>intervals[i+1][0]){
intervals[i+1][1] = min(intervals[i][1], intervals[i+1][1]);
num++;
}
}
return num;
}
};
参考文章:代码随想录-435. 无重叠区间
763.划分字母区间
class Solution {
public:
vector<int> partitionLabels(string s) {
int hash[27] = {0};
for(int i=0; i<s.size(); i++){
hash[s[i]-'a'] = i;
}
vector<int> result;
int index = 0, pre = -1;
for(int i=0; i<s.size(); i++){
index = max(index, hash[s[i]-'a']);
if(i == index){
result.push_back(index-pre);
pre = index;
}
}
return result;
}
};
参考文章:代码随想录-763.划分字母区间
56. 合并区间
class Solution {
public:
static bool cmp(const vector<int>&a, const vector<int>&b){
return a[0]<b[0];
}
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end(), cmp);
vector<vector<int>> result;
vector<int> temp=intervals[0];
for(int i=1; i<intervals.size(); i++){
if(intervals[i][0]>temp[1]){
result.push_back(temp);
temp = intervals[i];
}
else{
temp[1] = max(intervals[i][1],temp[1]);
}
}
result.push_back(temp);
return result;
}
};
参考文章:代码随想录-56. 合并区间