program FindSmallestMissingNumber;
uses SysUtils, FGL;
type
TIntArray = array of Integer;
TIntSet = specialize TFPGList<Integer>;
function FindSmallestMissingNumber(arr: TIntArray): Integer;
var
numSet: TIntSet;
index, i: Integer;
begin
numSet := TIntSet.Create;
for i := Low(arr) to High(arr) do
numSet.Add(arr[i]);
index := 1;
while True do
begin
if numSet.IndexOf(index) = -1 then
begin
FindSmallestMissingNumber := index;
Exit;
end;
Inc(index);
end;
numSet.Free;
end;
var
arr: TIntArray;
begin
arr := TIntArray.Create(3, 4, -1, 1);
WriteLn(FindSmallestMissingNumber(arr));
end.
(*
run:
2
*)