435. 无重叠区间
class Solution {
public:static bool cmp(const vector<int>& a, const vector<int>& b){return a[1]<b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.size()==1) return 0;sort(intervals.begin(), intervals.end(), cmp);int end = intervals[0][1];int count = 0;for (int i=1;i<intervals.size();i++){if (intervals[i][0]<end) {count++;// end = intervals[i][1];}}int n = intervals.size();return count;}
};
763. 划分字母区间
class Solution {
public:vector<int> partitionLabels(string s) {vector<int> ans;vector<int> memo(27, 0);for (int i=0; i<s.size(); i++){memo[s[i]-'a'] = max(memo[s[i]-'a'], i); }int sum = 1;int last = -1;for (int i=0; i<s.size(); i++){if (last==-1) {last=memo[s[i]-'a'];if (i==last) {ans.push_back(1);last = -1;}continue;}if (i<last){sum++;last = max(last, memo[s[i]-'a']);}else{ans.push_back(sum+1);sum = 1;last = -1;}}return ans;}
};
56. 合并区间
class Solution {
public:static bool cmp(const vector<int>& a, const vector<int>& b){if (a[0]==b[0]) return a[1]<b[1];return a[0]<b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.size()==1) return intervals;vector<vector<int>> ans;sort(intervals.begin(), intervals.end(), cmp);int last = intervals[0][1];int first = intervals[0][0];for (int i=1; i<intervals.size(); i++){if (intervals[i][0]<=last){first = min(first, intervals[i][0]);last = max(last,intervals[i][1]);}else{ans.push_back({first, last});first = intervals[i][0];last = intervals[i][1];}if (i==intervals.size()-1) ans.push_back({first, last});}return ans;}
};