150強訪談簡單

包含每个查询的最小间隔

「包含每個查詢的最小間隔」問題的詳細指南和 Python 實作。

問題陳述

簡單

給定一個 2D 整數陣列區間,其中區間[i] = [left_i, right_i] 描述從 left_i 開始到 right_i 結束(含)的第 i 個區間。间隔的大小定义为 right_i - left_i + 1。您还将获得一个整数数组查询。第 j 個查詢的答案是最小間隔 i 的大小,使得 left_i <= requests[j] <= right_i。如果不存在這樣的區間,則答案為-1。

返回包含查询答案的数组。

寫一個函數 minInterval(intervals: List[List[int]], queries: List[int]) -> List[int]

約束條件
  • 1 <= len(intervals) <= 10^5
  • 1 <= len(queries) <= 10^5
  • intervals[i].length == 2
  • 1 <= left_i <= right_i <= 10^7
  • 1 <= queries[j] <= 10^7

範例

Example 1
Input
intervals = [[1,4],[2,4],[3,6],[4,4]], queries = [2,3,4,5]
Output
[3,3,1,4]
Explanation

Smallest interval containing 2 is [2,4] (size 3). For 3 is [2,4] (size 3). For 4 is [4,4] (size 1). For 5 is [3,6] (size 4).

Example 2
Input
intervals = [[2,3],[2,5],[1,8],[20,25]], queries = [2,19,5,22]
Output
[2,-1,4,6]
Explanation

For 2: [2,3] (size 2). For 19: none (-1). For 5: [2,5] (size 4). For 22: [20,25] (size 6).

Need a Hint?
考慮使用特定於間隔的資料結構,例如集合或堆。
Edge Cases to Watch
  • 空輸入結構
  • 單元素輸入
  • 大數值範圍

準備好解決了嗎?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

在編輯器中開啟
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

推薦的 Python 資源

透過相關的互動式教學、備忘單和程式碼比較來擴展您的知識。