在Hackerrank中,我有一个解决New Year Chaos问题的scala代码,但是在某些测试案例中,我收到了超时错误
请帮助我优化以下代码:
def minimumBribes(q: Array[Int]){
val c = q.sorted
var swap = 0
var count_swap=0
import scala.util.control._
val loop = new Breaks
var temp = 0
var flag = true
loop.breakable
{
for (i <- q.length-1 to 0 by -1)
{
swap = 0
if (q(i) != i+1)
{
swap=i-q.indexOf(i+1)
if (swap > 2) {println("Too Chaotic");flag=false;loop.break()}
else
{
temp= q(q.indexOf(i+1))
q(q.indexOf(i+1)) = q(i-1)
q(i-1) = q(i)
q(i) = temp
count_swap += swap
if(q.deep == c.deep){
loop.break()
}
}
}
}
}
if (flag)println(count_swap)
}
答案 0 :(得分:0)
说实话,我不理解您的实现,但
1)q.sorted
约为10 ^ 5,n
可能已经用完了。
2)q.sorted
调用实际上是多余的,因为它只是一个1..n
序列。
3)使用q.indexOf
会使算法O(n ^ 2)变得复杂。可以在线性时间内解决。