题目描述:旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
Python测试:
// An highlighted block
# class Solution:
# def minNumberInRotateArray(self, rotateArray):
# # write code here
# if len(rotateArray) == 0:
# return 0
#
# ret = rotateArray[0]
# if len(rotateArray) == 1:
# return ret
#
# for i in range(1, len(rotateArray)):
# now = rotateArray[i]
# if now < ret:
# ret = now
# break
#
# return ret
class Solution:
def MinInOrder(self, rotateArray, left, right):
res = rotateArray[left]
for i in range(left, right+1):
if res > rotateArray[i]:
res = rotateArray[i]
return res
def minNumberInRotateArray(self, rotateArray):
# write code here
lenArr = len(rotateArray)
left, right = 0, lenArr-1
while left <= right:
if right - left == 1:
return rotateArray[right]
mid = (left + right)//2
if rotateArray[left] == rotateArray[mid] \
and rotateArray[mid] == rotateArray[right]:
return self.MinInOrder(rotateArray, left, right)
if rotateArray[mid] >= rotateArray[left]:
left = mid
elif rotateArray[mid] <= rotateArray[right]:
right = mid
return rotateArray[right]
if __name__ == "__main__":
a = Solution()
num = [3,4,5,1,2]
data = a.minNumberInRotateArray(num)
print(data)
知识点回顾:
查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。
查找表(Search Table):由同一类型的数据元素(或记录)构成的集合
关键字(Key):数据元素中某个数据项的值,又称为键值。
主键(Primary Key):可唯一地标识某个数据元素或记录的关键字。
查找表按照操作方式可分为:
静态查找表(Static Search Table):只做查找操作的查找表。它的主要操作是:
查询某个“特定的”数据元素是否在表中
检索某个“特定的”数据元素和各种属性
动态查找表(Dynamic Search Table):在查找中同时进行插入或删除等操作:
查找时插入数据
查找时删除数据
https://www.cnblogs.com/feixuelove1009/p/6148357.html
总结:
旋转数组的最小数字:
https://blog.csdn.net/qq_38441207/article/details/88648118