#3825. 兔猫学院的“神秘后继符”探索

兔猫学院的“神秘后继符”探索

🐰🐱 兔猫信奥学院:加菲老师的“神秘后继符”探索

题目描述

在兔猫信奥学院的魔法阵列里,加菲老师摆放了一排按字母顺序排列的神秘魔符(小写字母)。小兔和小猫需要帮助他找到阵列中紧随某个给定魔符 target 之后的那个魔符,如果已经到了阵列末尾,则要回到开头继续寻找。

具体规则:

  • 给定一个长度为 n 的字符数组 letters(按非递减顺序排列,且至少包含两个不同的字母),和一个目标字符 target
  • 返回 letters 中严格大于 target 的最小字符;如果没有更大的字符,则返回 letters[0]

你需要设计一个 O(log n) 的算法来完成这项任务。


输入格式

n target
letters[0] letters[1] … letters[n-1]
  • 第一行包含整数 n 和一个字符 target,分别表示魔符数量和目标魔符。
  • 第二行包含 n 个小写字母,以空格分隔,表示已按字典序(非递减)排列的魔符阵列。

输出格式

  • 输出一个字符,表示对给定 target 的“后继魔符”查询结果。

样例输入 1

3 c
c f j

样例输出 1

f

解释:在 ['c','f','j'] 中,比 'c' 大的最小字符是 'f'


样例输入 2

3 j
c f j

样例输出 2

c

解释:没有比 'j' 更大的字符,返回开头的 `'c'‘。


数据范围

  • 2 ≤ n ≤ 10 000
  • letters[i] 是小写字母
  • 数组按照非递减顺序排列,且至少包含两种不同字符
  • target 为小写字母