[リートコード] 0435. 重複しない間隔

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

中くらい

 


間隔の配列が与えられた場合 間隔 どこ 間隔[i] = [開始i 、終了i ]、 戻る 残りの間隔が重複しないようにするために削除する必要がある間隔の最小数.

例 1:

入力: 間隔 = [[1,2],[2,3],[3,4],[1,3]]
出力: 1
説明: [1,3] は削除でき、残りの間隔は重複しません。

例 2:

入力: 間隔 = [[1,2],[1,2],[1,2]]
出力: 2
説明: 残りの間隔が重ならないようにするには、2 つの [1,2] を削除する必要があります。

例 3:

入力: 間隔 = [[1,2],[2,3]]
出力: 0
説明: 間隔はすでに重複していないため、削除する必要はありません。

制約:

  • 1 <= 間隔.長さ <= 10 5
  • 間隔[i].length == 2
  • -5 * 10 4 <= 開始i < 終了i <= 5 * 10 4

パイソン

				
					# 時間計算量: O(nlogn) # 空間計算量: インポート リスト クラスの入力による O(n) 解決策: def EraseOverlapIntervals(self, Intervals: List[List[int]]) -> int: Intervals.sort(key=lambda x : x[1]) k = -float("inf") ans = 0 (間隔 x、y の場合): x >= k の場合: k = y それ以外の場合: ans += 1 を返し、ans 間隔 = [[1, 2] 、[2, 3]、[3, 4]、[1, 3]] print(Solution().eraseOverlapIntervals(intervals))
				
			
ja日本語