Klaus Mock: Fehlende Zahl einer Zahlenreihe ermitteln

Beitrag lesen

Hallo,

Jetzt suche ich die erste (oder überhaupt eine) Zahl die Fehlt, also z.B. die 4.

Zuerst ist die Frage, ob Du nur wissen willst, ob irgendeine Zahl nicht vorkommt (Variante 1), ob Du wissen willst, welche die erste Zahl ist, die nicht vorkommt (Variante 2), oder ob Du alle Zahlen wissen willst, die nicht vorkommen (Variante 3).

Das Hash ist sicherlich eine gute Variante, wenn auch meist mit viel Speicherplatzverbrauch verbunden, vor allem, wenn es ein großes Feld wird.

Wie ist es mit diese Lösung? (bewußt quasi pseudo-code und aus der Hüfte geschossen)

sollindex = 1;
while(werte = lese_datensatz)
  {
  istindex = lese_istindex(werte);
// das nur ein Vorschlag, falls der erste Index kleiner 1 wäre
  if(sollindex > istindex)
    sollindex = istindex;
  while(sollindex < istindex)
    {
    add_to_fehlindex_array(sollindex);
    sollindex = sollindex+1;
    }
  sollindex = sollindex+1;
  }

Das ergibt in dem fehlindex_array alle fehlenden Indizes.

sollindex = 1;
index_fehlt = 0;
while(werte = lese_datensatz)
  {
  istindex = werte[index];
  if(sollindex > istindex)
    sollindex = istindex;
  if(sollindex < istindex)
    {
     index_fehlt = 1;
     exit_while;
    }
  sollindex = sollindex+1;
  }

Das erledigt Variante 1 und 2 (wenn fehlt_index 1 ist, dann steht in sollindex der erste fehlende Index.

Grüße
  Klaus