题目很简单,对一个非递减数列进行一次旋转,对得到的旋转后的数组输出最小的元素
分析一下:如果原始非递减序列没有发生旋转那么返回第一个元素就行了,如果发生了旋转那么返回第一次出现A[i]>A[[i+1]位置的A[i+1]即可
下面是具体实现:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能:python求解非递减排序的数组的一个旋转的最小元素
'''
def test_func(num_list):
'''
'''
if len(num_list)==0:
return 0
for i in range(len(num_list)-1):
if num_list[i]>num_list[i+1]:
return num_list[i+1]
return num_list[0]
if __name__ == '__main__':
num_list=[[3,4,5,1,2],[1,2,3,4,5],[34,56,78,1,2,3]]
for one_list in num_list:
print 'one_list最小元素为:',one_list, test_func(one_list)
结果如下:
one_list最小元素为: [3, 4, 5, 1, 2] 1
one_list最小元素为: [1, 2, 3, 4, 5] 1
one_list最小元素为: [34, 56, 78, 1, 2, 3] 1
[Finished in 0.3s]