From fad239ed0e77e9941b7c78b96007e9d959423003 Mon Sep 17 00:00:00 2001
From: ductnn <trannhuduc531998@gmail.com>
Date: Mon, 20 Nov 2023 00:13:29 +0700
Subject: [PATCH] add sol

---
 .../frequencyoftheMostFrequentElement.go      | 56 +++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 leetcode/1838.FrequencyoftheMostFrequentElement/frequencyoftheMostFrequentElement.go

diff --git a/leetcode/1838.FrequencyoftheMostFrequentElement/frequencyoftheMostFrequentElement.go b/leetcode/1838.FrequencyoftheMostFrequentElement/frequencyoftheMostFrequentElement.go
new file mode 100644
index 0000000..5c87fa0
--- /dev/null
+++ b/leetcode/1838.FrequencyoftheMostFrequentElement/frequencyoftheMostFrequentElement.go
@@ -0,0 +1,56 @@
+package main
+
+import (
+	"fmt"
+	"sort"
+)
+
+func maxFrequency(nums []int, k int) int {
+	sort.Ints(nums)
+
+	// Sliding window
+	result, window := 1, 0
+	for l, r := 0, 1; r < len(nums); r++ {
+		window += (nums[r] - nums[r-1]) * (r - l)
+		for window > k {
+			window -= nums[r] - nums[l]
+			l++
+		}
+
+		result = max(result, r-l+1)
+	}
+
+	return result
+}
+
+func maxFrequency1(nums []int, k int) int {
+	sort.Ints(nums)
+
+	// Sliding window
+	l, curr := 0, 0
+	for r := 0; r < len(nums); r++ {
+		target := nums[r]
+		curr += target
+
+		if (r-l+1)*target-curr > k {
+			curr -= nums[l]
+			l++
+		}
+	}
+
+	return len(nums) - l
+}
+
+func max(x, y int) int {
+	if x < y {
+		return y
+	}
+	return x
+}
+
+func main() {
+	nums := []int{1, 4, 8, 13}
+	k := 5
+
+	fmt.Println(maxFrequency1(nums, k))
+}