[リートコード] 0057. インターバルの挿入

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

中くらい

 


重複しない間隔の配列が与えられます。 間隔 どこ 間隔[i] = [開始i 、終了i ] の始まりと終わりを表します  間隔と 間隔 で昇順にソートされます 私を始めます間隔も与えられます。 newInterval = [開始、終了] これは、別の間隔の開始と終了を表します。

入れる 新しい間隔 の中へ 間隔 そのような 間隔 まだ昇順でソートされています 私を始めます そして 間隔 重複する間隔はまだありません (必要に応じて、重複する間隔をマージします)。

戻る 間隔 挿入後.

注記 変更する必要がないこと 間隔 新しい配列を作成して返すことができます。

例 1:

入力: 間隔 = [[1,3],[6,9]]、新しい間隔 = [2,5]
出力: [[1,5],[6,9]]

例 2:

入力: 間隔 = [[1,2]、[3,5]、[6,7]、[8,10]、[12,16]]、新しい間隔 = [4,8]
出力: [[1,2],[3,10],[12,16]]
説明: 新しい間隔 [4,8] は [3,5]、[6,7]、[8,10] と重なっているためです。

制約:

  • 0 <= 間隔.長さ <= 10 4
  • 間隔[i].length == 2
  • 0 <= 開始i <= 終了i <= 10 5
  • 間隔 で並べ替えられています 私を始めます で 上昇 注文。
  • newInterval.length == 2
  • 0 <= 開始 <= 終了 <= 10 5

パイソン

				
					# 時間計算量: O(n) # 空間計算量: import List クラスの入力による O(n) 解決策: def insert(self, Interval: List[List[int]], newInterval: List[int]) -> List[List [int]]: result = [] i = 0 while i < len(intervals) かつ newInterval[0] > Intervals[i][1]: result.append(intervals[i]) i += 1 while i < len (間隔) および newInterval[1] >= 間隔[i][0]: newInterval[0] = min(間隔[i][0], newInterval[0]) newInterval[1] = max(間隔[i][ 1], newInterval[1]) i += 1 result.append(newInterval) while i < len(intervals): result.append(intervals[i]) i += 1 結果の間隔 = [[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]] newInterval = [4, 8] print(Solution().insert(intervals, newInterval))
				
			
ja日本語