How to find the maximum distance between two occurrences of same number in array with VB.NET

1 Answer

0 votes
Imports System
Imports System.Collections.Generic

Public Class Program
    Public Shared Function GetMaxDistance(ByVal arr As Integer()) As Integer
        Dim dict As Dictionary(Of Integer, Integer) = New Dictionary(Of Integer, Integer)()
        Dim maximumDistance As Integer = 0
        Dim size As Integer = arr.Length

        For i As Integer = 0 To size - 1
            If Not dict.ContainsKey(arr(i)) Then
                dict(arr(i)) = i
                Console.Write("dict[arr[i]]=" & dict(arr(i)))
                Console.Write(" arr[i]=" & arr(i))
                Console.WriteLine(" i=" & i)
            Else
                maximumDistance = Math.Max(maximumDistance, i - dict(arr(i)))
                Console.Write("dict[arr[i]]=" & dict(arr(i)))
                Console.Write(" i - dict[arr[i]]=" & (i - dict(arr(i))))
                Console.WriteLine(" i=" & i)
            End If
        Next

        Return maximumDistance
    End Function

    Public Shared Sub Main(ByVal args As String())
        Dim arr As Integer() = New Integer() {7, 1, 4, 3, 1, 5, 3, 4, 9, 1, 3}
	
        Console.Write(GetMaxDistance(arr))
    End Sub
End Class




' run:
'
' dict[arr[i]]=0 arr[i]=7 i=0
' dict[arr[i]]=1 arr[i]=1 i=1
' dict[arr[i]]=2 arr[i]=4 i=2
' dict[arr[i]]=3 arr[i]=3 i=3
' dict[arr[i]]=1 i - dict[arr[i]]=3 i=4
' dict[arr[i]]=5 arr[i]=5 i=5
' dict[arr[i]]=3 i - dict[arr[i]]=3 i=6
' dict[arr[i]]=2 i - dict[arr[i]]=5 i=7
' dict[arr[i]]=8 arr[i]=9 i=8
' dict[arr[i]]=1 i - dict[arr[i]]=8 i=9
' dict[arr[i]]=3 i - dict[arr[i]]=7 i=10
' 8
'

 



answered Dec 17, 2022 by avibootz
...