leetcode1287

1  クラスソリューション:
 2      DEF removeCoveredIntervals(自己、間隔:' リスト[リストの[int] ') - > INT 3          #intervals = ソート(間隔)
 4          N = LEN(間隔)
 5          DP = [ 0 ] * N
 6          以下のために私が範囲(N):
 7              場合 DP [I] == 1 8                  続ける
9              10の                 ための J における範囲(I + 1 、N):
 11                     場合 DP [J] == 1 12が                         続行
13                      他の14                          であれば区間[i]が[ 0 ] <=間隔[j] [ 0 ]との間隔[I] [ 1 ]> =間隔[J] [ 1 ]:
 15                              DP [J] = 1 
16                          のelif間隔[I] [ 0 ]> =間隔[J] [ 0 ]との間隔[I] [ 1 ] <=間隔[J] [ 1 ]:
 17                              DP [I] = 1 
18          数= 0 
19          のためにI における範囲(N):
 20              もし DP [I] == 0 21                  カウント+ = 1 
22          戻りカウント

1288削除対象区間

考え互いに素なセットは、マージされます(小規模)セクションフラグが、最後のフラグは必要な数ではありません。

 

思考の別の行、最初の並べ替えを比較し、より効率的な:

1  クラスソリューション:
 2      DEF removeCoveredIntervals(自己、間隔:リスト[リスト[ INT ]]) - > INT 3          カウント= lenは(間隔)
 4          intervals.sort()
 5          MAX =間隔[ 0 ] [ 1 ]
 6          ための I 、(S、E)列挙(区間[ 1 :]):
 7              もし E> MAX:
 8                  MAX = E
 9              10                  カウント- = 1 
11         リターン回数

参考:https://leetcode.com/problems/remove-covered-intervals/discuss/451532/Python3-O(n*logn)-solution-with-sort

おすすめ

転載: www.cnblogs.com/asenyang/p/12041717.html