From ba05c26a0018c6db8fd8b56760aab9e99afeaea8 Mon Sep 17 00:00:00 2001 From: Openset Date: Sat, 26 Jan 2019 09:24:40 +0800 Subject: [PATCH] Add: Maximum Average Subarray I --- .../maximum_average_subarray_i.go | 16 +++++++++++++ .../maximum_average_subarray_i_test.go | 24 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/problems/maximum-average-subarray-i/maximum_average_subarray_i.go b/problems/maximum-average-subarray-i/maximum_average_subarray_i.go index 6571e382a..a0a076275 100644 --- a/problems/maximum-average-subarray-i/maximum_average_subarray_i.go +++ b/problems/maximum-average-subarray-i/maximum_average_subarray_i.go @@ -1 +1,17 @@ package maximum_average_subarray_i + +func findMaxAverage(nums []int, k int) float64 { + max, sum := 0, 0 + for i, v := range nums { + sum += v + if i == k-1 { + max = sum + } else if i >= k { + sum -= nums[i-k] + } + if sum > max { + max = sum + } + } + return float64(max) / float64(k) +} diff --git a/problems/maximum-average-subarray-i/maximum_average_subarray_i_test.go b/problems/maximum-average-subarray-i/maximum_average_subarray_i_test.go index 6571e382a..d3fb3f277 100644 --- a/problems/maximum-average-subarray-i/maximum_average_subarray_i_test.go +++ b/problems/maximum-average-subarray-i/maximum_average_subarray_i_test.go @@ -1 +1,25 @@ package maximum_average_subarray_i + +import "testing" + +type caseType struct { + nums []int + k int + expected float64 +} + +func TestFindMaxAverage(t *testing.T) { + tests := [...]caseType{ + { + nums: []int{1, 12, -5, -6, 50, 3}, + k: 4, + expected: 12.75, + }, + } + for _, tc := range tests { + output := findMaxAverage(tc.nums, tc.k) + if output != tc.expected { + t.Fatalf("input: %v %v, output: %v, expected: %v", tc.nums, tc.k, output, tc.expected) + } + } +}