I got this question for an exam:
Given an integer array find the first number which is not repeating in array using O(N) time complexity and O(1) space co
I did this using PowerShell
[int[]]$arr = @(6,2,1,2,6,1,7)
$Collection = New-Object 'System.Collections.Generic.list[System.Object]'
$props=[ordered]@{"Index"=9999;"Value"=9999;"Numcount"=9999}
$record = New-Object -TypeName psobject -Property $props
$Collection.Add($record) #This record is added to do a Contains operation
#for future items to be added in the $collection object
for($i =0;$i -lt $arr.Length;$i++)
{
if($i -eq 0)
{
$props=[ordered]@{"Index"=$i;"Value"=$arr[$i];"Numcount"=1}
$record = New-Object -TypeName psobject -Property $props
$Collection.Add($record)
}
elseif($Collection.value.Contains($arr[$i]))
{
$count = ($Collection | ?{$_.Value -eq $arr[$i]} | select -First `
1).Numcount
($Collection | ?{$_.Value -eq $arr[$i]} | select -First 1).Numcount = `
$count+1
}
else
{
$props=[ordered]@{"Index"=$i;"Value"=$arr[$i];"Numcount"= 1}
$record = New-Object -TypeName psobject -Property $props
$Collection.Add($record)
}
}
Write-Output "The first non repeating number in the array is listed below"
$Collection | Sort-Object Numcount -Descending | ?{$_.Numcount -eq 1} |
Select -First 1
OUTPUT:-
The first non repeating number in the array is listed below
Index Value Numcount
----- ----- --------
6 7 1