给定一些区间,找到需要移除的最小区间数,以使其余的区间不重叠。
样例
样例1:
输入: [ [1,2], [2,3], [3,4], [1,3] ]
输出: 1
解释: [1,3] 被移除后,剩下的区间将不再重叠。
样例2:
输入: [ [1,2], [1,2], [1,2] ]
输出: 2
解释: 需要将两个 [1,2] 移除使得剩下的区间不重合。
样例3:
输入: [ [1,2], [2,3] ]
输出: 0
解释: 不需要移除任何区间因为本身就没有任何区间重合。
注意事项
- 可以假设区间的终止点一定比起始点大。
- 区间[1,2]和[2,3]虽然边缘重合,但是它们并未重叠。
解题思路1:
转换题意为找到最长不重叠区间的数目,最后结果只需要list.size()-最长不重叠区间数目。
而找最长不重叠子序列,就类似Lintcode 76. 最长上升子序列,将区间按start升序,end升序,依次查找即可。
/**
* Definition of Interval:
* public classs Interval {
* int