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;
    }

 

posted @ 2021-10-25 22:16  毅毅毅毅毅  阅读(46)  评论(0)    收藏  举报