Imports System
Imports System.Collections.Generic
Public Class Program
Public Shared Function maxSubArrayLenEqualsToK(ByVal arr As Integer(), ByVal k As Integer) As Integer
Dim current As Integer = 0, len As Integer = 0
Dim dict As Dictionary(Of Integer, Integer) = New Dictionary(Of Integer, Integer)()
Dim size As Integer = arr.Length
For i As Integer = 0 To size - 1
current += arr(i)
If current = k Then
len = i + 1
ElseIf dict.ContainsKey(current - k) Then
len = Math.Max(len, i - dict(current - k))
End If
If Not dict.ContainsKey(current) Then
dict(current) = i
End If
Next
Return len
End Function
Public Shared Sub Main(ByVal args As String())
Dim arr As Integer() = New Integer() {1, -1, 5, -2, -3, 2, 3, 3}
Dim K As Integer = 3
' 1, -1, 5, -2 = 3 (4)
' 5, -2 = 3 (2)
' -2, -3, 2, 3, 3 = 3 (5)
Console.Write(maxSubArrayLenEqualsToK(arr, K))
End Sub
End Class
' run:
'
' 5
'