我刚刚用Java和Objective-C这两种语言在黑客排名问题New Year Chaos中实现了一种算法。 Java的实现通过了所有测试用例,但是Objective-C的实现由于超时而被终止,并且无法通过6到12的测试用例。 由于该算法正确并且可以在Java中运行,因此我在Objective-C中的代码可能有什么问题? 这是我的java8代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="content">
<ul>
<li class="client-1"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-2"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-3"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-4"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-5"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-6"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-7"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-8"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-9"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-10"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-11"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
<li class="client-12"><img src="https://placeholder.com/wp-content/uploads/2018/10/placeholder.com-logo1.png" ></li>
</ul>
</div>
这是在Objective-C中的实现:
static void minimumBribes(int[] q) {
int count = 0 ;
int midOfThree = Integer.MAX_VALUE;
int maxOfThree = Integer.MAX_VALUE;
int minOfThree = Integer.MAX_VALUE ;
for(int i=q.length-1 ; i >= 0 ; i--){
if((q[i]-i) > 3 ) {
System.out.println("Too chaotic");
return;
}
else{
if(q[i] > maxOfThree){
System.out.println("Too chaotic");
return;
}
else if(q[i] > midOfThree){
count=count+2;
}
else if(q[i] > minOfThree){
count=count+1;
}
if(q[i]<minOfThree){
maxOfThree=midOfThree;
midOfThree=minOfThree;
minOfThree = q[i];
}
else if(q[i]<midOfThree){
maxOfThree=midOfThree;
midOfThree = q[i];
}
else if(q[i]<maxOfThree){
maxOfThree = q[i];
}
}
}
System.out.println(count);
}
}
这是问题描述:
这是元旦,每个人都在仙境中排队 过山车!有很多人排队,每个人 人戴着贴纸,表明他们在队列中的初始位置。 初始位置从行的最前面开始增加到 后面。
队列中的任何人都可以贿赂在他们面前的人 换仓。如果两个人调换职位,他们仍然会穿着 相同的标签表示他们原来的位置。一个人可以 最多贿赂另外两个人。例如,如果和贿赂,队列将 看起来像这样:。
被这个混乱的队列所吸引,您决定必须知道最低要求 使排队进入当前行列的贿赂数量 状态!
功能说明
在下面的编辑器中完成函数minimumBribes。它必须打印 表示必需的最小贿赂数量的整数,或 如果无法进行线路配置,则会混乱。
minimumBribes具有以下参数:
q:整数输入格式的数组
第一行包含一个整数,即测试用例的数量。
接下来的每对线如下: -第一行包含一个整数,即队列中的人数 -第二行包含以空格分隔的整数,描述队列的最终状态。
输出格式
打印一个整数,表示要获得的最低贿赂数量 队列进入最终状态。如果状态为 无效,即要求一个人贿赂的人多于其他人。