#3823. 兔猫学院的“秘符搜索”挑战

兔猫学院的“秘符搜索”挑战

🐰🐱 兔猫信奥学院:加菲老师的“秘符搜索”挑战

题目描述

在兔猫信奥学院的魔法图书馆里,加菲老师收藏着一串有序的魔法秘符,每个秘符对应一个整数编号。一天,加菲老师让小兔和小猫去寻找某个目标秘符,只要能快速定位,就能打开下一道密室的大门。

给定一个长度为 nn 的升序(非严格递增、不重复)整数数组 nums ,和一个目标值 target。请你帮助小兔、小猫编写函数,在数组中搜索 target :

  • 如果目标值存在,返回它在数组中的下标(从 0 开始计数);
  • 如果不存在,返回 -1。

加菲老师强调:你需要设计一个 O(logn)O(\log n) 时间复杂度的算法,不能使用内置的排序或查找函数。


输入格式

n target
nums[0] nums[1] … nums[n-1]
  • 第一行包含两个整数 nn 和 target,分别表示秘符总数和待查找的目标编号。
  • 第二行包含 nn 个整数,表示已按升序排列的秘符编号 nums[i]

输出格式

  • 输出一个整数,表示 target 在数组 nums 中的下标(0 开始)。如果不存在,则输出 -1。

样例输入 1

6 9
-1 0 3 5 9 12

样例输出 1

4

解释: nums[4] == 9,返回 4。


样例输入 2

6 2
-1 0 3 5 9 12

样例输出 2

-1

解释: 数组中不存在 2,返回 -1。


数据范围

  • 1n100001 \le n \le 10\,000
  • 9999nums[i],  target9999-9999 \le nums[i],\;target \le 9999
  • 数组 nums 严格升序,无重复元素。