#10230. 第一次出现的位置(二分)
第一次出现的位置(二分)
✅ Problem: 第一次出现的位置(二分)
题目描述
请在一个有序不递减 的数组中查找给定值 第一次出现的位置(即最左边的位置)。
如果数组中不存在该值,请输出 -1
。
你需要回答 个询问,每个询问给定一个 ,请输出其在数组中第一次出现的位置 * *(从 1 开始计数)。
输入格式
-
第一行一个整数 ()——数组的长度;
-
第二行 个非负整数(有序、不递减);
-
第三行一个整数 ()——询问次数;
-
第四行 个整数,每个表示一个要查找的数字 。
输出格式
- 一行 个整数,表示每个 第一次出现的位置(从 1 开始计数),若不存在则输出
-1
。
输入样例
6
1 2 2 2 3 3
3
3 2 5
输出样例
5 2 - 1
题目说明
-
数组中可能有重复值;
-
输出的位置按输入的 顺序返回;
-
你需要使用 * *二分查找 * *完成此任务。
✅ 提示
- 本题可以使用
lower_bound()
(或手动写二分)寻找最左下标; - 时间复杂度:,可通过所有数据。