A non-empty array A consisting of N integers is given.
A triplet (X, Y, Z), such that 0 ≤ X < Y < Z < N, is called a double slice.
The sum of double slice (X, Y, Z) is the total of A[X + 1] + A[X + 2] + ... + A[Y − 1] + A[Y + 1] + A[Y + 2] + ... + A[Z − 1].
For example, array A such that:
A[0] = 3 A[1] = 2 A[2] = 6 A[3] = -1 A[4] = 4 A[5] = 5 A[6] = -1 A[7] = 2contains the following example double slices:
- double slice (0, 3, 6), sum is 2 + 6 + 4 + 5 = 17,
- double slice (0, 3, 7), sum is 2 + 6 + 4 + 5 − 1 = 16,
- double slice (3, 4, 5), sum is 0.
The goal is to find the maximal sum of any double slice.
Write a function:
Private Function solution(A As Integer()) As Integer
that, given a non-empty array A consisting of N integers, returns the maximal sum of any double slice.
For example, given:
A[0] = 3 A[1] = 2 A[2] = 6 A[3] = -1 A[4] = 4 A[5] = 5 A[6] = -1 A[7] = 2the function should return 17, because no double slice of array A has a sum of greater than 17.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [3..100,000];
- each element of array A is an integer within the range [−10,000..10,000].
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Private Function solution(A As Integer()) As Integer
' write your code in VB.NET 4.0
Dim Slice1() As Integer = Ending(A)
Dim slice2() As Integer = Starting(A)
Dim maxSUM As Integer = 0
For i As Integer = 1 To A.Length - 2
maxSUM = Math.Max(maxSUM, Slice1(i - 1) + slice2(i + 1))
Next
Return maxSUM
End Function
Public Shared Function Ending(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = 1 To input.Length - 2
result(i) = Math.Max(0, result(i - 1) + input(i))
Next
Return result
End Function
Public Shared Function Starting(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = input.Length - 2 To 1 Step -1
result(i) = Math.Max(0, result(i + 1) + input(i))
Next
Return result
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End
/tmp/user.vb (55,16) : error VBNC90019: Expected 'End'. /tmp/user.vb (56,7) : error VBNC90019: Expected 'End'. /tmp/user.vb (57,14) : error VBNC30203: Identifier expected. /tmp/user.vb (58,13) : error VBNC30203: Identifier expected. /tmp/user.vb (59,11) : error VBNC30203: Identifier expected. /tmp/user.vb (60,8) : error VBNC30203: Identifier expected. /tmp/user.vb (61,10) : error VBNC30203: Identifier expected. /tmp/user.vb (63,14) : error VBNC30203: Identifier expected. /tmp/user.vb (64,27) : error VBNC30203: Identifier expected. /tmp/user.vb (66,13) : error VBNC30203: Identifier expected. /tmp/user.vb (67,28) : error VBNC30203: Identifier expected. /tmp/user.vb (69,10) : error VBNC30203: Identifier expected. /tmp/user.vb (71,14) : error VBNC30203: Identifier expected. /tmp/user.vb (72,8) : error VBNC30203: Identifier expected. /tmp/user.vb (73,8) : error VBNC30203: Identifier expected. /tmp/user.vb (74,13) : error VBNC30203: Identifier expected. /tmp/user.vb (75,4) : error VBNC30203: Identifier expected. /tmp/user.vb (76,4) : error VBNC30203: Identifier expected. /tmp/user.vb (77,4) : error VBNC30203: Identifier expected. /tmp/user.vb (78,4) : error VBNC30203: Identifier expected. /tmp/user.vb (79,18) : error VBNC30203: Identifier expected. /tmp/user.vb (80,4) : error VBNC30203: Identifier expected. /tmp/user.vb (81,5) : error VBNC30203: Identifier expected. /tmp/user.vb (83,16) : error VBNC30203: Identifier expected. /tmp/user.vb (84,10) : error VBNC30203: Identifier expected. /tmp/user.vb (86,14) : error VBNC30203: Identifier expected. /tmp/user.vb (87,8) : error VBNC30203: Identifier expected. /tmp/user.vb (88,8) : error VBNC30203: Identifier expected. /tmp/user.vb (89,24) : error VBNC30203: Identifier expected. /tmp/user.vb (91,16) : error VBNC30203: Identifier expected. /tmp/user.vb (92,10) : error VBNC30203: Identifier expected. /tmp/user.vb (94,14) : error VBNC30203: Identifier expected. /tmp/user.vb (95,6) : error VBNC30203: Identifier expected. /tmp/user.vb (96,6) : err
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Private Function solution(A As Integer()) As Integer
' write your code in VB.NET 4.0
Dim Slice1() As Integer = Ending(A)
Dim slice2() As Integer = Starting(A)
Dim maxSUM As Integer = 0
For i As Integer = 1 To A.Length - 2
maxSUM = Math.Max(maxSUM, Slice1(i - 1) + slice2(i + 1))
Next
Return maxSUM
End Function
Public Shared Function Ending(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = 1 To input.Length - 2
result(i) = Math.Max(0, result(i - 1) + input(i))
Next
Return result
End Function
Public Shared Function Starting(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = input.Length - 2 To 1 Step -1
result(i) = Math.Max(0, result(i + 1) + input(i))
Next
Return result
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Private Function solution(A As Integer()) As Integer
' write your code in VB.NET 4.0
Dim Slice1() As Integer = Ending(A)
Dim slice2() As Integer = Starting(A)
Dim maxSUM As Integer = 0
For i As Integer = 1 To A.Length - 2
maxSUM = Math.Max(maxSUM, Slice1(i - 1) + slice2(i + 1))
Next
Return maxSUM
End Function
Public Shared Function Ending(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = 1 To input.Length - 2
result(i) = Math.Max(0, result(i - 1) + input(i))
Next
Return result
End Function
Public Shared Function Starting(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = input.Length - 2 To 1 Step -1
result(i) = Math.Max(0, result(i + 1) + input(i))
Next
Return result
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
' you can use Console.WriteLine for debugging purposes, e.g.
' Console.WriteLine("this is a debug message")
Private Function solution(A As Integer()) As Integer
' write your code in VB.NET 4.0
Dim Slice1() As Integer = Ending(A)
Dim slice2() As Integer = Starting(A)
Dim maxSUM As Integer = 0
For i As Integer = 1 To A.Length - 2
maxSUM = Math.Max(maxSUM, Slice1(i - 1) + slice2(i + 1))
Next
Return maxSUM
End Function
Public Shared Function Ending(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = 1 To input.Length - 2
result(i) = Math.Max(0, result(i - 1) + input(i))
Next
Return result
End Function
Public Shared Function Starting(input() As Integer) As Integer()
Dim result As Integer() = New Integer(input.Length - 1) {}
result(0) = InlineAssignHelper(result(input.Length - 1), 0)
For i As Integer = input.Length - 2 To 1 Step -1
result(i) = Math.Max(0, result(i + 1) + input(i))
Next
Return result
End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T
target = value
Return value
End Function
The solution obtained perfect score.