2016-04-17 2 views
-5

Es gibt ein Array und Daten zufällig eingefügt. Wir müssen die größte Auswahl an Nullindizes finden, ich habe keine Ahnung. Wie kann ich das lösen?Wie ermittelt man den größten Nullbereich in einem Array?

Die Frage, die ich versuchen werde zu erklären ...

Frage: den größten Indexbereich Bestimmung ohne Lizenznummer Wenn Sie die Lizenznummern unter dem Array weitergegeben wurden, Bestimmen Sie den größten Bereich von Indizes, dass keine Lizenznummer hinzugefügt wird. Wenn zum Beispiel keine Lizenznummer zu den Indizes im Bereich von 1255-1264 hinzugefügt wird und dies der größte derartige Bereich ist, sollten Sie diesen Bereich bestimmen und ausdrucken.

public void maxNull() { 
    int start, end, result; 
    for (int i = 0; i < hasharr.length; i++) { 
     if (hasharr[i] == null) { 
      while (hasharr[i] == null) { 
       start = i; 
       i++; 

      } 
     } 

    } 

} 
+1

was hast du bisher versuchen? –

+0

Ich habe versucht, etwas zu schreiben, aber es ist absolut falsch :) –

Antwort

0

Dieser Code sollte Ihnen helfen:

//We initialize both start and end with -1, which means there was no such range 
//found yet. If at the end of the search their value is unchanged, then there 
//are no null values in the set 
int finalStart = -1; 
int finalEnd = -1; 
//rangeLength represents the length of the final range, which is 0 initially 
int rangeLength = 0; 
int start = -1; 
for (int i = 0; i < hasharr.length; i++) { 
    if (hasharr[i] != null) { 
     if (start >= 0) { 
      if (rangeLength < i - start + 1) { 
       finalStart = start; 
       finalEnd = i; 
       rangeLength = start + i; 
      } 
      start = -1; 
     } 
    } else if (start == -1) { 
     start = i; 
    } 
} 
if ((start >= 0) && (rangeLength < hasharr.length - start)) { 
    finalStart = start; 
    finalEnd = hasharr.length - 1; 
} 
+0

Hinweis: Die Frage fragt nach dem größten Nullbereich, dieser findet den größten Nicht-Null-Bereich. –

+0

@AndyTurner, danke für den Hinweis, dass die Antwort nicht beschreibend genug war. Ich habe meine Antwort bearbeitet, um das Problem zu beheben. –

+1

Warte, was? Sie haben gerade gesagt, dass sie den größten Nullbereich findet, worauf ich hingewiesen habe - was genau das Gegenteil von dem ist, worauf ich hingewiesen habe. Es setzt 'start' eindeutig auf einen Nicht-Null-Wert und fährt fort, bis es einen Null-Wert findet. –