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