2017-05-18 8 views
0

Kann ich dieses Problem von Terminated wegen Zeitüberschreitung gelöst bekommen?Wie löst man dieses Problem wegen Zeitüberschreitung in Java?

Ich meine, wie die Komplexität oder unerwünschten Code zu reduzieren, um das Problem zu lösen?

Hier ist mein Code:

public class Solution { 

    public static void main(String[] args) { 
     int i,n,hit,count=0,p=0,t,tmp,j; 
     int h[]=new int[100000]; 
     Scanner sc=new Scanner(System.in); 

     n=sc.nextInt(); 
     hit=sc.nextInt(); 
     t=sc.nextInt(); 

     for(i=0;i<n;i++){ 
      h[i]=sc.nextInt(); 
     } 

     for(i=0;i<n;i++){ 
      for(j=i;j<n;j++){ 
      if(h[i]>h[j]){ 
       tmp=h[i]; 
       h[i]=h[j]; 
       h[j]=tmp; 
      } 
      } 
     } 

     for(i=1;i<=t;i++){ 
      h[p]-=hit; 
      if(h[p]<=0){ 
      count++; 
      p++; 
      } 
     } 

     System.out.println(count); 
    } 

} 
+0

Erstens:

import java.util.Scanner; 

Der fertige Code sollte wie folgt aussehen Sie Blase Art verwenden nicht. Verwende 'Arrays.sort'. Viel schneller. –

+0

Wenn eine Antwort für Sie funktioniert hat, markieren Sie sie als akzeptierte Antwort. Ansonsten, kommentieren Sie es, dass es nicht funktioniert hat. Es hilft Ihnen, die richtige Antwort schneller zu bekommen. Stellen Sie sicher, dass Sie tatsächlich die Antworten versuchen. – Spencer4134

Antwort

0

Da ich die Problemstellung nicht wissen, das einzige, was ich zu vorschlagen kann immer Blase vermeiden Sortieren. Es ist Komplexität ist O(n^2), und wahrscheinlich ist das, was behindert, dass Sie Zeitbedarf sind.

Verwenden Arrays.sort wie Arrays.sort(h)

0

Das einzige Problem, das ich sehen kann, ist Sie müssen den Scanner importieren, bevor Sie es verwenden können. Wenn ich den Code lief, den Sie mir zur Verfügung gestellt haben, gab es eine Zeitüberschreitung, weil der Scanner nicht gefunden werden konnte, aber wenn ich den Scanner importierte, lief es einwandfrei, also nehme ich an, dass derselbe Timeout-Fehler vorliegt. Setzen Sie diese Anweisung am Anfang des Codes:

import java.util.Scanner; 

public class Solution { 
     public static void main(String[] args) { 
      int i,n,hit,count=0,p=0,t,tmp,j; 
      int h[]=new int[100000]; 
      Scanner sc=new Scanner(System.in); 

      n=sc.nextInt(); 
      hit=sc.nextInt(); 
      t=sc.nextInt(); 

      for(i=0;i<n;i++){ 
       h[i]=sc.nextInt(); 
      } 
      for(i=0;i<n;i++){ 
       for(j=i;j<n;j++){ 
        if(h[i]>h[j]){ 
         tmp=h[i]; 
         h[i]=h[j]; 
         h[j]=tmp; 
        } 
       } 
      } 

      for(i=1;i<=t;i++){ 
       h[p]-=hit; 
       if(h[p]<=0){ 
        count++; 
        p++; 
       } 
      } 
      System.out.println(count); 
     } 
    } 
Verwandte Themen