首页 > 试题广场 >

旋转数组中的最小元素

[编程题]旋转数组中的最小元素
  • 热度指数:7869 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。

输入描述:
一个排好序的数组的一个旋转
数组长度不超过1000000


输出描述:
该数组的最小值
示例1

输入

3 4 5 1 2

输出

1
def getMin(arr):
    low = 0
    high = len(arr) - 1
    if len(arr) == 0:
        return 0
    if len(arr) ==1:
        return arr[0]
    while low <= high:
        mid = (low + high) >> 1 # 右移一位相当于除以2
        if arr[mid]>arr[high]:
            low = mid + 1
        elif arr[mid] < arr[low]:
            high = mid
        else:
            high -= 1
    return arr[low]

发表于 2020-09-14 17:23:18 回复(1)
""""
求最小值?
"""

if __name__ == "__main__":
    a = list(map(int, input().strip().split()))
    print(min(a))

发表于 2019-07-14 12:16:04 回复(3)