今日任务
452. 用最少数量的箭引爆气球
435. 无重叠区间
763.划分字母区间
452. 用最少数量的箭引爆气球
题目链接: . - 力扣(LeetCode)
class Solution {
public int findMinArrowShots(int[][] points) {
Arrays.sort(points, (a, b)-> {
if(a[1] == b[1]) return Integer.compare(a[0], b[0]);
return Integer.compare(a[1], b[1]);
});
if (points.length == 1) return 1;
int maxReach = points[0][1];
int res = 1;
for (int i = 1; i < points.length; i++) {
if (points[i][0] > maxReach) {
res++;
maxReach = points[i][1];
}
}
return res;
}
}
435. 无重叠区间
题目链接: . - 力扣(LeetCode)
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
Arrays.sort(intervals, (a,b)->{ return a[0] - b[0];});
if (intervals.length == 1) return 0;
int res = 0;
int rightReach = intervals[0][1];
for (int i = 1; i < intervals.length; i++) {
if (rightReach > intervals[i][0]) {
res++;
rightReach = Math.min(rightReach, intervals[i][1]);
} else {
rightReach = intervals[i][1];
}
}
return res;
}
}
763.划分字母区间
题目链接: . - 力扣(LeetCode)
class Solution {
public List<Integer> partitionLabels(String s) {
List<Integer> res = new ArrayList<>();
int[] map = new int['z' - 'a' + 1];
for (int i = 0; i < s.length(); i++) {
map[s.charAt(i) - 'a'] = i;
}
int left = 0;
int right = 0;
for (int i = 0; i < s.length(); i++) {
right = Math.max(right,map[s.charAt(i) - 'a']);
if (i == right) {
res.add(right - left + 1);
left = right + 1;
}
}
return res;
}
}