How to get the first missing smallest positive integer in an unsorted integer array with Pascal

1 Answer

0 votes
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
     
*)

 



answered Jun 4 by avibootz
...