2017-08-03 2 views
-1

Problem Statement: ein Integer-Array Gegeben, finden, wenn eine ganze Zahl p in der Anordnung, so dass die Anzahl der ganzen Zahlen größer als p in dem Array gleich zu p existiert Wenn eine solche ganze Zahl return 1 else return gefunden wird - 1.Wo liege ich falsch, wenn ich Noble Ganzzahl finde?

Mein Code:

 public int solve(ArrayList<Integer> A) { 
     Collections.sort(A); 
     for(int i=A.size()-1;i>=0; i--){ 
      if(A.get(i) == (A.size()-i-1)) 
       return 1; 
     } 
     return -1; 
    } 

Aber es falsch Ausgang für den gewissen Eingang geben, die ich bin nicht in der Lage intuitively.i.e zu verstehen, Rückkehr 1, wenn sie zurückkehren sollten -1. Kann jemand auf meine Fehler hinweisen?

+4

was geschehen wird, wenn die sortierten Feld nicht eindeutig zuzuordnen sind ... – Mukit09

+0

@ Mukit09 Wird -1 zurück, wenn alle Elemente derselben des Arrays sind. –

+0

Sind Sie sicher? Hast du diese Art von Eingabe überprüft? – Mukit09

Antwort

2

Danke an alle Kommentatoren. Ich habe nicht genau beobachtet, was passieren könnte, wenn einige Werte gleich sind. Die richtige Lösung, die ich gefunden habe, ist wie folgt.

public int solve(ArrayList<Integer> A) { 
    Collections.sort(A); 
    for(int i=A.size()-1;i>=0; i--){ 
     if(i<A.size()-1 && A.get(i) == A.get(i+1))continue; 
     if(A.get(i) == (A.size()-i-1)) 
      return 1; 
    } 
    return -1; 
} 
Verwandte Themen