调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

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

示例:

输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]
输出: [3,9]

提示:

  • 0 <= len(array) <= 1000000
通过次数
30.9K
提交次数
67.1K
通过率
46.1%


相关企业

提示 1
在开始和结束时知道最长的排序序列会有帮助吗?

提示 2
我们可以把这个数组分成3个子数组:LEFT、MIDDLE和RIGHT。LEFT和RIGHT都是有序的。MIDDLE的元素顺序是任意的。我们需要展开MIDDLE,直到可以对这些元素排序并使整个数组有序。

提示 3
考虑3个子数组:LEFT、MIDDLE和RIGHT。只关注这个问题:是否可以排序MIDDLE以使整个数组有序?如何进行验证?

提示 4
为了能够对MIDDLE进行排序并对整个数组进行排序,需要MAX(LEFT) <= MIN(MIDDLE, RIGHT)和MAX(LEFT, MIDDLE) <= MIN(RIGHT)。

提示 5
你能把中间部分展开直到满足前面的条件吗?

提示 6
你应该能在O(N)时间内解出来。

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
运行和提交代码需要登录
array =
[]
Source