这是一个面试问题。 给定一个整数数组,编写一个方法来查找索引m和n,这样如果你对元素m到n进行排序,整个数组就会被排序。最小化n-m。即找到最小的序列。
答案 0 :(得分:6)
m之前的整数应该是升序的并且小于(或等于)之后的任何整数。
从第一个元素开始,并在第一个元素减少时停止。 (子阵列SA)
找到最小值。 (MIN)
起点就在SA中的最大整数之后,小于(或等于)MIN。 (m被发现)
O(N)
对n。
做类似的事情答案 1 :(得分:4)
你需要跟踪四件事:
首先计算1和2的初步值,方法是从开始和结束扫描数组,直到找到错位的值。
然后在初步1之后扫描所有内容,找到最小数量。这是你的3.以同样的方式找到4.
现在你回溯到数组的起始区域,直到找到最小值的位置。这是1和m
的确切答案。
通过回溯结束区域以相同的方式查找n
以查找最大数量应该在哪里。