1. 程式人生 > 其它 >5分鐘瞭解二叉樹之LeetCode裡的二叉樹

5分鐘瞭解二叉樹之LeetCode裡的二叉樹

//20220403
題目描述:給定一個區間的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除區間的最小數量,使剩餘區間互不重疊 。
題目連結:點我

解題思路:

  • 貪心,我們可以把區間想象成時間區段,每個時間區段有一個會議,我們需要在這麼多時間區段裡儘可能安排多的會議場數,這時我們就需要從會議結束的時間來找,讓每個會議結束時間儘可能的早,為後面的會議留更多的時間,最終我們得到的就是最多會議的一個安排
  • 程式碼如下:

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals,new Comparator<int[]>() {
                    @Override
                    public int compare(int[] o1, int[] o2) {
                        return o1[1]-o2[1];
                    }
                }
        );

        int right = intervals[0][1];
        int ans = 1;
        for(int i = 1;i<intervals.length;++i){
            if(intervals[i][0]>=right){
                ans++;
                right = intervals[i][1];
            }
        }
        return intervals.length-ans;
    }
}

這一題太經典了
希望對大家有所幫助
以上