题目:旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
刚开始没看懂题目,感觉就是直接判断一个数组中的最小值,因此就直接遍历求列表的最小值了,然后直接通过...
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
if len(rotateArray) == 0:
return 0
else:
min_num = rotateArray[0]
for i in rotateArray:
if i < min_num:
min_num = i
return min_num
翻看讨论区才读懂这个问题,意思就是原本是一串非递减排序的数组,现在把他的前面几个元素直接挪到最后面,但是输入的就相当于两端非递减的。
因此只要找到相邻的两个元素,后一个小于前一个的,那么后一个就是最小的。
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
if len(rotateArray) == 0:
return 0
else:
for i in range(len(rotateArray)-1):
if rotateArray[i] > rotateArray[i+1]:
return rotateArray[i+1]
return rotateArray[0]
心得:
没看懂题是个很迷的事情
讨论区好多人说做二分查找,只是想找最小值,有必要用二分吗,二分的效率主要体现在:在一个有顺序的数组中找到某个指定的元素...(此观点保留)