2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)
题目描述
小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。
算法复杂度要求不高于 nLog(n);
学号为整数类型,队列规模<=10000;
输入描述
1、第一行:输入已排成队列的小朋友的学号(正整数),以”,”隔开;
例如:93,95,97,100,102,123,155
2、第二行:小明学号,如 110;
输出描述
输出一个数字,代表队列位置(从 1 开始)。
例如:
6
示例1
输入
93,95,97,100,102,123,155
110
输出
6
示例2
输入
93,95,97,100,102,123,155
90
输出
1
示例3
输入
93,95,97,100,102,123,155
160
输出
8
考点
二分查找
解题思路
将已排好序的学号列表转换成整数列表,然后使用二分查找找到小明应该插入的位置
代码
python
vec=list(map(int,input().split(',')))
tar=int(input()) #目标学号
low=0
hi=len(vec)-1
while low<=hi:
mid=int((low+hi)/2)
if vec[mid]<tar:
low=mid+1
else:
hi=mid-1
print(low+1) #因为下标从1开始
目录
<