1. 程式人生 > 程式設計 >SpringSecurity整合jwt許可權認證的全流程講解

SpringSecurity整合jwt許可權認證的全流程講解

給定一個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。

注意:

可以認為區間的終點總是大於它的起點。
區間 [1,2] 和 [2,3] 的邊界相互“接觸”,但沒有相互重疊。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/non-overlapping-intervals
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

****************************************************************************************************************

在選擇要保留的區間時,區間結尾的數值越小,留給其他區間的空間就越大,剩下的區間數就可能越多(即移除的區間就可能越少)

實現:先把區間按照結尾的大小進行升序排列,每次選擇結尾最小且和前一個選擇的區間不重疊的區間:

public int eraseOverlapIntervals(int[][] intervals) {
        if (intervals.length == 0)
            return 0;
        //按尾部大小排序
        // lambda表示式: Arrays.sort(intervals, (m, n) -> m - n);
        
// m - n: 升序; n - m: 降序; // > 0, 升序; < 0, 降序 Arrays.sort(intervals, (m, n) -> m[1] - n[1]); int counts = 0, end = intervals[0][1]; for (int j = 1; j < intervals.length; j++){ if (intervals[j][0] < end){ counts++; }else { end
= intervals[j][1]; } } return counts; }

排序之後,當遍歷到的區間的頭部大於上一個選擇區間的尾部,證明這兩個區間有重疊,所以需要移除後面的區間,反之,則更新尾部。