算法题1:找出旋转有序数列的中间值python实现
题目:
给出一个有序数列随机旋转之后的数列,如原有序数列为:[0,1,2,4,5,6,7] ,旋转之后为[4,5,6,7,0,1,2]。
假定数列中无重复元素,且数列长度为奇数。
求出旋转数列的中间值。如数列[4,5,6,7,0,1,2]的中间值为4。
输入
4,5,6,7,0,1,2
输出
4
输入样例
1
1,2,3
4,5,6,7,0,1,2
12,13,14,5,6,7,8,9,10
输出样例
1
2
4
9
方法1 排序后直接取。
def solution(line): #line = "4,5,0,1,2" array = list(line.split(",")).sort() return array[len(array)/2]
方法2 不排序,找出旋转的点直接取到中间值。
def solution(line): # 缩进请使用 4 个空格,遵循 PEP8 规范 array = list(line.split(",")) head = int(array[0]) array_len = len(array) for i in range(array_len): if int(array[i]) < head: break if i == array_len - 1: return(array[array_len/2]) else: if i <= array_len/2: return(array[array_len/2+i]) else: return(array[i-array_len/2-1])
参考:
https://blog.csdn.net/weixin_39789689/article/details/82291870