1 primero es ordenar la matriz
Para matrices de tipo constante, ordene en orden ascendente
Arrays.sort(arr);
Para matrices de tipo char, asegúrese de que el caso sea coherente
Arrays.sort(caracteres);
Para matrices personalizadas
class Solution {
public int[][] merge(int[][] intervals) {
//也就是说,如果一个数组的最大值小于另一个数组的最小值,就是需要重叠,去重
//首先,先将数组中一第一个数进行排序
Arrays.sort(intervals,new Comparator<int[]>(){
public int compare(int[] o1,int[] o2){
//只比较第一个元素,按照第一个元素进行从小到大排序
return o1[0]-o2[0];
}
});
//排好序之后,需要进行比较数组的左边端点和右边端点,如果新数组的左边端点小于右边端点,说名有重叠了
List<int[]> output=new ArrayList<>();
for(int i=0;i<intervals.length;i++){
int[] cur=intervals[i];
if(output.size()==0){
output.add(cur);
}else{
//如果结果集中最后一个结果的右边小于新的数组的左边,则可以直接放在结果里面
int[] last=output.get(output.size()-1);
if(last[1]<cur[0]){
output.add(cur);
//如果最后一个结果的右边,大于新数组的左边,那么只能合并,更新数组中最后一个的右边为最大的右边
}else if(last[1]>=cur[0]){
last[1]=Math.max(last[1],cur[1]);
}
}
}
//此时将结果取出变成一个二维数组返回
return output.toArray(new int[output.size()][]);
}
}
2 Para ordenar la lista enlazada
Clase de colección de colecciones.
La lista es una constante y una cadena.
Colecciones.sort(lista);
La lista es una clase personalizada.
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Joe", 24),
new Person("Pete", 18),
new Person("Chris", 21)
);
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
// TODO Auto-generated method stub
return a.age < b.age ? -1 : a.age == b.age ? 0 : 1;
}
});
System.out.println(people);
//[{name=Pete, age=18}, {name=Chris, age=21}, {name=Joe, age=24}]
}