由于新年混乱问题超时而终止,仅使用Objective-C

时间:2018-10-30 19:12:33

标签: java objective-c algorithm

我刚刚用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:整数输入格式的数组

     

第一行包含一个整数,即测试用例的数量。

     

接下来的每对线如下:   -第一行包含一个整数,即队列中的人数   -第二行包含以空格分隔的整数,描述队列的最终状态。

     

输出格式

     

打印一个整数,表示要获得的最低贿赂数量   队列进入最终状态。如果状态为   无效,即要求一个人贿赂的人多于其他人。

0 个答案:

没有答案