代码实现:
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
int count = 0;
for (int i = 1; i < intervals.length; i++) {
if (intervals[i][0] < intervals[i - 1][1]) {
count++;
intervals[i][1] = Math.min(intervals[i - 1][1], intervals[i][1]);
}
}
return count;
}
}
代码实现:
class Solution {
public List<Integer> partitionLabels(String s) {
List<Integer> ans = new ArrayList<>();
int[] edge = new int[26];
for (int i = 0; i < s.length(); i++) {
edge[s.charAt(i) - 'a'] = i;
}
int idx = 0;
int start = -1;
for (int i = 0; i < s.length(); i++) {
idx = Math.max(idx, edge[s.charAt(i) - 'a']);
if (i == idx) {
ans.add(i - start);
start = i;
}
}
return ans;
}
}
代码实现:
class Solution {
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
List<int[]> ans = new ArrayList<>();
if (intervals.length == 1) {
return intervals;
}
for (int i = 1; i < intervals.length; i++) {
if (intervals[i][0] <= intervals[i - 1][1]) {
intervals[i][0] = Math.min(intervals[i - 1][0], intervals[i][0]);
intervals[i][1] = Math.max(intervals[i - 1][1], intervals[i][1]);
} else {
ans.add(intervals[i - 1]);
}
}
ans.add(intervals[intervals.length - 1]);
return ans.toArray(new int[ans.size()][]);
}
}