LeetCode 数据结构—无重叠区间

这道题可以用贪心算法和动态规划来解,贪心算法思路:先按照每个数组最右值大小排序,我们需要尽量找右边值最小数组作为保留的数组(这样可以留下更多数组),然后在将当前数组的右值和下一个数组的最左值比较。如果合适则加入。动态规划的思路:找以每个区间作为结尾的最大区间数。
public int eraseOverlapIntervals(int[][] intervals) { //贪心 if(intervals.length<=1) return 0; Arrays.sort(intervals,new Comparator<>(){ public int compare(int [] intervals1,int[] intervals2) { return intervals1[1]-intervals2[1]; } }); int sum=1; int right=intervals[0][1]; for(int i=1;i<intervals.length;i++) { if(intervals[i][0]>=right) { right=intervals[i][1]; sum++; } } return intervals.length-sum; }

浙公网安备 33010602011771号