From c01d4454af7af8e41b46a19ba8ff6839493c3b36 Mon Sep 17 00:00:00 2001 From: Danil M Date: Wed, 30 Apr 2025 11:30:08 -0400 Subject: [PATCH 1/4] add 2962 --- .../main/java/com/github/contest/Execute.kt | 7 +++-- .../slidingWindow/SlidingWindowLeetcode.kt | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index 183b6c92..eafd7cbd 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -3,9 +3,10 @@ package com.github.contest import com.github.contest.hashTable.countGoodAlternativeSolution import com.github.contest.math.numberOfPowerfulInt +import com.github.contest.slidingWindow.countSubArrayWithMaxElement +import com.github.contest.slidingWindow.countSubArrays import com.github.contest.strings.fullJustify import com.github.contest.strings.subStrHash -import com.github.contest.twoPointer.trap import java.util.TreeMap @@ -15,7 +16,9 @@ import java.util.TreeMap fun main() { - trap(intArrayOf(5, 1, 6, 2, 1, 2, 1, 3)).also { println(it) } + countSubArrayWithMaxElement( + intArrayOf(1, 3, 2, 3, 3), 2 + ).also { println(it) } } diff --git a/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt b/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt index 9a6deacb..8c85f742 100644 --- a/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt +++ b/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt @@ -133,3 +133,31 @@ private fun equalsMap(comparable: Map, base: Map): Boo return true } + +/** + * 2962. Count Subarrays Where Max Element Appears at Least K Times + */ + +fun countSubArrayWithMaxElement(nums: IntArray, k: Int): Long { + val maxNum = nums.maxOrNull() ?: return 0 + var count = 0L + var left = 0 + var maxCount = 0 + + for (right in nums.indices) { + if (nums[right] == maxNum) { + maxCount++ + } + + // When we have at least k occurrences, we count all subarrays ending at right + while (maxCount >= k) { + count += nums.size - right + if (nums[left] == maxNum) { + maxCount-- + } + left++ + } + } + + return count +} From 45a2ee2731fec780f6d166497a3ecbb5b6c7fd1d Mon Sep 17 00:00:00 2001 From: Danil M Date: Wed, 30 Apr 2025 11:30:35 -0400 Subject: [PATCH 2/4] change comments --- .../com/github/contest/slidingWindow/SlidingWindowLeetcode.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt b/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt index 8c85f742..2da15132 100644 --- a/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt +++ b/contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt @@ -149,7 +149,7 @@ fun countSubArrayWithMaxElement(nums: IntArray, k: Int): Long { maxCount++ } - // When we have at least k occurrences, we count all subarrays ending at right + while (maxCount >= k) { count += nums.size - right if (nums[left] == maxNum) { From cd931f68665992cdded839222ca3894a28b54a84 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Thu, 1 May 2025 15:41:22 +0100 Subject: [PATCH 3/4] add 228 --- .../com/github/contest/array/ArrayLeetcode.kt | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/contest/src/main/java/com/github/contest/array/ArrayLeetcode.kt b/contest/src/main/java/com/github/contest/array/ArrayLeetcode.kt index aaaf4573..c2ca311d 100644 --- a/contest/src/main/java/com/github/contest/array/ArrayLeetcode.kt +++ b/contest/src/main/java/com/github/contest/array/ArrayLeetcode.kt @@ -207,5 +207,39 @@ fun rotate(nums: IntArray, k: Int) { } } +/** + * 228. Summary Ranges + */ + +fun summaryRanges(nums: IntArray): List { + val result = mutableListOf() + if (nums.isEmpty()) return result + + var start = nums[0] + var prev = nums[0] + + for (i in 1 until nums.size) { + if (nums[i] == prev + 1) { + prev = nums[i] + } else { + if (start == prev) { + result.add("$start") + } else { + result.add("$start->$prev") + } + start = nums[i] + prev = nums[i] + } + } + + // Add the last range + if (start == prev) { + result.add("$start") + } else { + result.add("$start->$prev") + } + + return result +} From b922510d973258280c34443faf425313a5e5b77d Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Thu, 1 May 2025 15:54:57 +0100 Subject: [PATCH 4/4] saving --- contest/src/main/java/com/github/contest/Execute.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index eafd7cbd..cab31315 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -3,8 +3,6 @@ package com.github.contest import com.github.contest.hashTable.countGoodAlternativeSolution import com.github.contest.math.numberOfPowerfulInt -import com.github.contest.slidingWindow.countSubArrayWithMaxElement -import com.github.contest.slidingWindow.countSubArrays import com.github.contest.strings.fullJustify import com.github.contest.strings.subStrHash import java.util.TreeMap @@ -16,10 +14,6 @@ import java.util.TreeMap fun main() { - countSubArrayWithMaxElement( - intArrayOf(1, 3, 2, 3, 3), 2 - ).also { println(it) } - }