题目描述
定义: * 实数轴上的一个区间由左右两个端点,假设区间是左闭右开的,例如区间`[0,1)` * 给定一个有序的不重合非负整数区间列表 `range_list` :[ `[0,1)`, `[3,4)` ] * 该非负整数区间列表将实数轴分割成了这些区间列表 `range_list_nature_ext` : [`(-∞,0)`,`[0,1)`,`[1,3)`,`[3,4)`,`[4,+∞)`] * 我们称 `range_list_nature_ext` 为由 `range_list` 扩展的 `自然区间` 问题:写一个查找算法,对于给定非负整数区间列表 `range_list` ,查找一个非负整数 `p` 落在了 `range_list_nature_ext` 的那个区间,返回那个区间的在 `range_list_nature_ext` 里的下标,我们称这个下标为非负整数 `p` 在 `rage_list` 里的 `自然坐标`。
输入描述
第一行输入要查找的非负整数 `p`,以及区间列表个数 `N`,用空格分开 第二行到第`N+1`行输入非负整数区间列表的每个区间,这些区间列表不重叠,按在实数轴上从左到右的顺序挨个输入,区间的两个坐标用空格分开。
输出描述
输出一行,包含非负整数 `p` 的自然坐标
要求
时间限制:1000 ms | 内存限内存限制制:256 M |
参考示例
输入 | 12 2 0 10 15 20 | 输出 | 2 |
解题思路
把找区间下标简单看成比较大小(排序)问题,因为所有区间都是左闭右开,从小到大或从大到小比较所有区间右边界或者左边边界即可。
代码和结果
class Solution:
def __init__(self) -> None:
pass
def solution(self, P, N, vector):
result = None
# TODO: 请在此编写代码
thres = []
for v in vector:
thres.append(v[0])
thres.append(v[1])
result = len(thres)
for i in range(len(thres)):
if P < thres[i]:
result = i
return result
return result
![](https://i-blog.csdnimg.cn/blog_migrate/43896ab2ffc4e1fdeddfbaa06b694778.png)