Menu
CoddyTech

Find Minimum in Rotated Sorted Array

中等二分查找python iconjava iconcpp iconc iconjs icon+10

一个由互不相同的整数构成的列表先按升序排序,然后进行了旋转:从列表开头取出若干个元素(可能是 0 个),并按原来的顺序移到末尾。例如,[2, 5, 9, 11, 13, 15, 17]旋转 3 个位置后变为[11, 13, 15, 17, 2, 5, 9]。给你旋转后的列表nums。请在O(log n)时间内返回其中的最小值。

函数

findMin(nums: integer-array) → integer
numsinteger-array
旋转后的不同整数列表
返回值integer
nums 中的最小值

约束条件

  • 1 ≤ nums.length ≤ 5000
  • -104 ≤ nums[i] ≤ 104
  • nums 中的所有值都互不相同。
  • nums 是一个递增列表,经过某个 k 次旋转,其中 0 ≤ k < nums.length;k = 0 表示它没有旋转。

示例

输入
nums = [11, 13, 15, 17, 2, 5, 9]
输出
2
解释
这些值先升到 17,再降到 2。由于 17 > 9,最小值在索引 3 的右侧;随后,5 ≤ 9 且 2 ≤ 5,让 hi 回到索引 4,该位置的值是 2。
challenge icon

进阶

你能在不对 nums 进行排序的情况下,以 O(log n) 的时间返回第 k 小的值吗?

重置代码
def findMin(nums):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [11, 13, 15, 17, 2, 5, 9]

预期输出

2