对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。
给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。
# 测试样例:
[1,4,6,5,9,10],6
返回:2
解题参考 :http://blog.csdn.net/u010033948/article/details/51396354
我的提交
# -*- coding:utf-8 -*-
class Subsequence:
def shortestSubsequence(self, A, n):
# write code here
maxValue = A[0]
maxErrIndex = -1
for i in range(n):
if A[i] > maxValue:
maxValue = A[i]
elif A[i] < maxValue:
maxErrIndex = i
if maxErrIndex == -1:
return 0
minValue = A[n-1]
minErrIndex = -1
for j in range(n)[::-1]:
if A[j] < minValue:
minValue = A[j]
elif A[j] > minValue:
minErrIndex = j
return maxErrIndex - minErrIndex + 1
if __name__ == '__main__':
s = Subsequence()
print(s.shortestSubsequence([1,2,10,1,8,9],6))