例如:有区间[3,7],[11,12],[14,16],[17,19],[21,24],[1,2],[4,8],[5,6],[9,10],[13,15],[18,22],[20,23]
将区间放入List<Long> list中:
list.add(3);
list.add(7);
list.add(11);
......
list中数据格式如下3,7,11,12,14,16,17,19,21,24,1,2,4,8,5,6,9,10,13,15,18,22,20,23
然后直接调用函数
GetCombinedSets(list,0);
将区间放入List<Long> list中:
list.add(3);
list.add(7);
list.add(11);
......
list中数据格式如下3,7,11,12,14,16,17,19,21,24,1,2,4,8,5,6,9,10,13,15,18,22,20,23
然后直接调用函数
GetCombinedSets(list,0);
list即为输出。
public void GetCombinedSets(List<Long> list,int index){
int i=index;
boolean isbreak=false;
for(;i<list.size()-2;i+=2){
if(isbreak){i-=2;break;}
Long start =list.get(i); Long end =list.get(i+1);
for(int j=i+2;j<list.size();j+=2){
Long nextstart=list.get(j); Long nextend=list.get(j+1);
if(start>nextend || end<nextstart){continue;}
// |dstart_____| or |dstart_____|
// |cstart_____| or |cstart____