/**
* 根据start排序,递增
* 依次根据后一个节点对的起始节点的值和前一个节点的结束节点的值比较,
* 如果后一个比前一个小,那么就说明存在重合区间,需要累加
*
*/
public static class Node{
int start;
int end;
public Node(){}
public Node(int start,int end){
this.start=start;
this.end=end;
}
}
public static void getMaxNumber(Node[] arr){
ArrayList<Node> list=new ArrayList<Node>();
for(int i=0;i<arr.length;i++){
list.add(arr[i]);
}
Collections.sort(list,
new Comparator<Node>(){
@Override
public int compare(Node o1, Node o2) {
if(o1.start!=o2.start){
return o1.start-o2.start;
}else{
return o1.end-o2.end;
}
}
});
// for(Node s:list){
// System.out.println("["+s.start+","+s.end+"]");
// }
int max=0;
for(int i=0;i<list.size();i++){
int f=list.get(i).end;
int tmp=1;
for(int j=i+1;j<list.size();j++){
if(list.get(j).start<f){
tmp++;
if(f>list.get(j).end){
f=list.get(j).end;
}
}
}
max=tmp>max?tmp:max;
}
System.out.println(max);
}
重合区间的最大个数
最新推荐文章于 2022-01-06 22:18:12 发布