
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find Maximum Sum of a Subarray with Length K in Golang
In this article we are going to understand how to use methods naming brute-force, sliding window and prefix sum methods of golang to find the maximum sum of a subarray with length k. We will also discuss the Algorithm for each method and provide code Examples to demonstrate their implementation.
Syntax
func len(v Type) int
The len() function is used to get the length of a any parameter. It takes one parameter as the data type variable whose length we wish to find and returns the integer value which is the length of the variable.
Example 1
The first Example to find maximum sum of a subarray with length k is Brute-Force Method.
package main import ( "fmt" "math" ) func maxSumBruteForce(arr []int, k int) int { n := len(arr) maxSum := math.MinInt64 for i := 0; i <= n-k; i++ { sum := 0 for j := i; j < i+k; j++ { sum += arr[j] } if sum > maxSum { maxSum = sum } } return maxSum } func main() { x := []int{1, 2, 3, 4, 5} fmt.Println("The given array of integers is:", x) var num int = 5 result := maxSumBruteForce(x, num) fmt.Println("The max sum is:", result) }
Output
The given array of integers is: [1 2 3 4 5] The max sum is: 15
Example 2
In this Example we will write a go language program to find the maximum sum of a subarray having k number of elements by using prefix sum method.
package main import ( "fmt" "math" ) func maxSumPrefixSum(arr []int, k int) int { n := len(arr) maxSum := math.MinInt64 prefixSum := make([]int, n+1) for i := 1; i <= n; i++ { prefixSum[i] = prefixSum[i-1] + arr[i-1] } for i := k; i <= n; i++ { sum := prefixSum[i] - prefixSum[i-k] if sum > maxSum { maxSum = sum } } return maxSum } func main() { x := []int{1, 2, 3, 4, 5, 6} fmt.Println("The given array of integers is:", x) var num int = 6 result := maxSumPrefixSum(x, num) fmt.Println("The max sum is:", result) }
Output
The given array of integers is: [1 2 3 4 5 6] The max sum is: 21
Conclusion
In this article, we explored three different methods to find the maximum sum of a subarray of a given length k in Golang. Here we have used two methods viz. The brute-force method and prefix sum method. The brute force method has a time complexity of O(nk), while prefix sum methods have a time complexity of O(n). The prefix sum methods is more efficient than the brute-force method, as it avoids unnecessary calculations.