问题:
有很多区间,比如[1.1,3.4] [1,3] [-1,3] [2.5,6].....
求区间重合次数最多的 比如上面[2.5,3]被重合了4次
思路:
用a[n][2]存储所有的区间,a[n][0]存储区间的开始值,a[n][1]存储区间的结束值,并且
a[n][0]<a[n][1]
首先将a[n][2]排序,按照起始点进行排序,升序,那么就会得到所有区间的起始点有序。
遍历a[n][2],比较a[i][1]与a[i+1][0],a[i+2][0]...(0<=i<n).比较直到a[k][0]>a[i][0]为止或者i=n-1,第i+1区间与其它所有区间的重合区间为[a[k-1][0],a[i][0]],覆盖次数为k-i
统计最大一次覆盖次数就行了。
时间复杂度:
排序:比如快排 O(nlogn)
查找覆盖区间:O(n*n);
有很多区间,比如[1.1,3.4] [1,3] [-1,3] [2.5,6].....
求区间重合次数最多的 比如上面[2.5,3]被重合了4次
思路:
用a[n][2]存储所有的区间,a[n][0]存储区间的开始值,a[n][1]存储区间的结束值,并且
a[n][0]<a[n][1]
首先将a[n][2]排序,按照起始点进行排序,升序,那么就会得到所有区间的起始点有序。
遍历a[n][2],比较a[i][1]与a[i+1][0],a[i+2][0]...(0<=i<n).比较直到a[k][0]>a[i][0]为止或者i=n-1,第i+1区间与其它所有区间的重合区间为[a[k-1][0],a[i][0]],覆盖次数为k-i
统计最大一次覆盖次数就行了。
时间复杂度:
排序:比如快排 O(nlogn)
查找覆盖区间:O(n*n);