高频面试题:部分排序

Posted 3Sunremitting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高频面试题:部分排序相关的知识,希望对你有一定的参考价值。

题目描述
给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。

# 部分排序
def subSort(arr):
    n=len(arr)
    maxx,minn=-float('inf'),float('inf')
    l,r=-1,-1
    for i in range(n):
        if arr[i]>=maxx:
            maxx=arr[i]
        else:
            r=i
        if arr[n-1-i]<=minn:
            minn=arr[n-1-i]
        else:
            l=n-1-i
    return [l,r]

a=[1,2,4,7,10,11,7,12,6,7,16,18,19]
print(subSort(a))

以上是关于高频面试题:部分排序的主要内容,如果未能解决你的问题,请参考以下文章