大都是自定义了 Interval的比较方法。
突发奇想
int [] arr=new int[intervals.Count*2];
for(int i=0;i<intervals.Count;i++)
{
arr[i*2]=intervals[i].start*10+1;
arr[i*2+1]=intervals[i].end*10+2;
}
Array.Sort(arr);
IList<Interval> list=new List<Interval>();
int s=0;//int e=1;
int count=0;
for(int i=0;i<arr.Length;i++)
{
if(arr[i]%2==1) count++;
else if(arr[i]%2==0) count--;
if(count==0)
{
list.Add(new Interval(arr[s]/10,arr[i]/10));
s=i+1;
}
}
return list;