28. april 2008 - 20:32Der er
11 kommentarer og 1 løsning
Finde første tal der IKKE optræder i List?
Hejsa!
Findes der en let fremgangsmåde eller måske funktion til at finde første tal i en List (f.eks. List<int>) eller Array der IKKE er nævnt (måske fra et bestemt sted på tallinjen)?
Eks.: 0 2 1 22 6 924 7 Hvis man ledte fra 6 ovenfor, skulle 8 findes, da det er det første tal, der ikke findes efter 6.
Mød en af Nordens fremmeste eksperter i adfærdsdesign – Morten Münster, der bl.a. har skrevet ” Jytte fra marketing er desværre gået for i dag” – på Computerworld Cloud & AI Festival.
Der er 2 forskelle i forhold til min: * jeg sorterer paa en kopi saaledes at den ikke aendrer originalen * jeg tror at din for loekke mangler et eller andet med start
Muligvis er den for loekke mnarginalt hurtigere end while loekkerne.
Men sorteringen er den dyre operation.
Synes godt om
Slettet bruger
28. april 2008 - 22:04#10
Ja... Hm. Jeg er både naab og idealist, som du måske har regnet ud. Anyway, kan du spotte fejlen i den sidste kode, jeg sendte? Skriver lige tilbage om lidt (kender selv fejlern).
Synes godt om
Slettet bruger
28. april 2008 - 22:16#11
Nå. Her kommer det: Den kunne ikke håndtere tomme Lists. Løsning:
private static int FindNextInteger(List<int> integers) { return FindNextInteger(integers, 0); }
private static int FindNextInteger(List<int> integers, int start) { if (integers.Count == 0) return -1; integers.Sort(); if (integers[0] > start) return start; for (int i = 0; i < integers.Count - 1; i++) { if (integers[i] > start && integers[i + 1] - integers[i] > 1) return integers[i] + 1; } return integers[integers.Count - 1] + 1; }
private static int FindNextNoteId() { if (Notes.Count == 0) return 0; List<int> ids = new List<int>(); for (int i = 0; i < Notes.Count; i++) ids.Add(GetNoteId(Notes[i])); return FindNextInteger(ids); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.