这两个代码之间的主要区别是什么?

时间:2019-07-16 06:38:49

标签: java performance loops while-loop timeout

请参阅以下两个代码,

代码1:

import java.util.*;
public class q{
     public static void main(String args[]){
         Scanner sc=new Scanner(System.in);
         int t=sc.nextInt();         
         for(int g=0;g<t;g++){
             int n=sc.nextInt(),c=sc.nextInt(),m=sc.nextInt();
             int totalChoc=n/c;int wrappers=n/c;
             while(m<=wrappers){
                 wrappers=wrappers-m;
                 totalChoc++;
                 wrappers++;}
             System.out.println(totalChoc);}}}

代码2:

import java.util.*;
public class q{
     public static void main(String args[]){
         Scanner sc=new Scanner(System.in);
         int t=sc.nextInt();         
         for(int g=0;g<t;g++){
             int n=sc.nextInt(),c=sc.nextInt(),m=sc.nextInt();
             int totalChoc=0;int wrappers=n/c;
             while(wrappers>0){                                
                 totalChoc=n/c+wrappers/m;
                 wrappers=wrappers%m;}
             System.out.println(totalChoc);}}}

这两个代码都是针对HackerRank上特定问题的解决方案。

两者都能给出正确的结果,但是代码1不会超时,而代码2却可以超时。

尽管我认为问题是由代码2的while循环引起的,但我认为这两个代码之间没有任何主要区别。

到底是什么问题?如何克服这个问题?

0 个答案:

没有答案