From 096546af60911218380338f8eb05e3bb96d7945b Mon Sep 17 00:00:00 2001 From: Rostislav Kuratch Date: Wed, 9 Feb 2022 00:45:18 +0200 Subject: [PATCH] Improved execution speed for task No 239 --- 239-sliding-window-maximum.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/239-sliding-window-maximum.go b/239-sliding-window-maximum.go index ab29aef..43b65bf 100644 --- a/239-sliding-window-maximum.go +++ b/239-sliding-window-maximum.go @@ -39,8 +39,20 @@ func (w *Window) Max(prevMax WindowMaximum) WindowMaximum { return maxBruteForce(w.nums, w.begin, w.end) } - if (w.nums[w.begin-1] == w.nums[w.begin]) && (w.nums[w.end-1] == w.nums[w.end]) { - return prevMax + if w.nums[w.begin-1] == w.nums[w.begin] { + if w.nums[w.end-1] == w.nums[w.end] { + return prevMax + } else { + if w.nums[w.end] >= prevMax.value { + return WindowMaximum{value: w.nums[w.end], valid: true, index: w.end} + } + } + } else { + if w.nums[w.end-1] == w.nums[w.end] { + if w.nums[w.begin] >= prevMax.value { + return WindowMaximum{value: w.nums[w.begin], valid: true, index: w.begin} + } + } } if !w.InWindow(prevMax.index) {