排序算法
适用场景
import java.util.*;
class Solution {
public int findMinArrowShots(int[][] points) {
if(points.length == 1){
return 1;
}
Arrays.sort(points, new Comparator<int[]>(){
@Override
public int compare(int[] a , int[] b){
if(a[1] < b[1]){
return -1;
}else if(a[1] == b[1]){
return 0;
}else{
return 1;
}
}
});
int pos = points[0][1];
int ans = 1;
for(int i = 1 ; i < points.length ; i++){
if(points[i][0] > pos){
pos = points[i][1];
ans++;
}
}
return ans;
}
}
class Solution {
public int[][] merge(int[][] intervals) {
if(intervals.length == 1){
return intervals;
}
Arrays.sort(intervals,new Comparator<int[]>(){
public int compare(int[] a ,int[] b){
return a[0] - b[0];
}
});
List<int[]> ret = new ArrayList<int[]>();
for(int i = 0, len = intervals.length ; i < len ;i++ ){
int tmp = i;
int maxRight = intervals[i][1];
while(i + 1 < len && intervals[i][1] >= intervals[i+1][0]){
maxRight = Math.max(intervals[i+1][1],maxRight);
i++;
}
ret.add(new int[]{intervals[tmp][0],maxRight});
}
return ret.toArray(new int[ret.size()][]);
}
}