旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
代码如下,在自己的IDE Python3中已跑通,但由于牛客网的在线编程平台中只可选择Pyhon2.7.3,同样的代码和测试用例在牛客网上会有报错,问题现暂未解决,记录一下。
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
if len(rotateArray) == 0:
return False
elif len(rotateArray) == 1:
return rotateArray[0]
elif len(rotateArray) == 2:
if rotateArray[0] < rotateArray[1]:
return rotateArray[0]
else:
return rotateArray[1]
else:
mid = len(rotateArray)//2
if rotateArray[0] < rotateArray[mid]:
rotateArray = rotateArray[mid+1:]
self.minNumberInRotateArray(rotateArray)
else:
rotateArray = rotateArray[:mid+1]
self.minNumberInRotateArray(rotateArray)
测试用例:
test= Solution()
testArray= [6501,6828,6963,7036,7422,7674,8146,8468,8704,8717,9170,9359,9719,9895,9896,9913,9962,154,293,334,492,1323,1479,1539,1727,1870,1943,2383,2392,2996,3282,3812,3903,4465,4605,4665,4772,4828,5142,5437,5448,5668,5706,5725,6300,6335]
test.minNumberInRotateArray(testArray)
自己的IDE上是没问题的:

牛客网(python2.7.3)的报错:
不通过
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为0.00%
测试用例:
[6501,6828,6963,7036,7422,7674,8146,8468,8704,8717,9170,9359,9719,9895,9896,9913,9962,154,293,334,492,1323,1479,1539,1727,1870,1943,2383,2392,2996,3282,3812,3903,4465,4605,4665,4772,4828,5142,5437,5448,5668,5706,5725,6300,6335]
对应输出应该为:
154
你的输出为:
%d format: a number is required, not NoneType
-----------------------------------------------------------------
确定不是python版本的问题,后又在python2.7.3上运行仍然争取,牛客网上的问题仍未解决,无头绪。

网友评论