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 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。