#3840. 兔猫信奥学院的“旋转之眼”

兔猫信奥学院的“旋转之眼”

🏫 题目名称:兔猫信奥学院的“旋转之眼”寻找最小值

🐰🐱 题目描述

兔猫信奥学院的魔法河岸上,沿河有一排刻度石,它们本来按照从小到大的编号排列,却被淘气的小兔不小心在某个位置用时空之力「旋转」了多次,使得刻度顺序绕了一圈。加菲老师挑战小猫:

“给你这条被旋转后的刻度带 nums,它原本是严格升序且互不相同的数组,经过了 1 到 n 次旋转(旋转 n 次效果等同 0 次)。请你用 \(O(\log n)\) 的时间,找出这条刻度带上的最小刻度值——也就是原数组的第一个元素。”

小猫立刻想道:“二分查找巧妙判断哪半区间有序,就能一口气定位最小值!”


📥 输入格式

第一行:整数 n  
第二行:n 个整数 nums[i],即被旋转后的数组
  • \(1 \le n \le 5000\)
  • \(-5000 \le nums[i] \le 5000\)
  • 所有 nums[i] 互不相同
  • 该数组是某个原升序数组(严格递增)经过 k 次旋转(1≤k≤n)后得到

📤 输出格式

一个整数:数组 nums 中的最小元素

💡 输入输出样例

样例 1

5
3 4 5 1 2
1

原数组 [1,2,3,4,5] 旋转 3 次后得到输入,最小值 1。

样例 2

7
4 5 6 7 0 1 2
0

样例 3

4
11 13 15 17
11

原数组旋转 4 次(等同未旋转),最小值仍是 11。


📊 数据范围

  • 数组长度 \(n\) 最多 5000
  • 元素取值范围 \([-5000,\,5000]\)
  • 要求算法时间复杂度 \(O(\log n)\)