高频面试题:部分排序

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))

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

大数据面试题:MapReduce核心高频面试题

快速串讲校招高频面试题——排序算法和复杂度

大厂Mysql高频面试题!java多数据源的优缺点

❤️ 互联网大厂面试高频算法题汇总 ❤️ —— ❤️ 二分专场 ❤️

算法高频面试之:快速排序

2021高频PHP面试题(值得收藏)