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
'