Skip to content

Commit c01d445

Browse files
add 2962
1 parent 7adaf0f commit c01d445

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

contest/src/main/java/com/github/contest/Execute.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package com.github.contest
33

44
import com.github.contest.hashTable.countGoodAlternativeSolution
55
import com.github.contest.math.numberOfPowerfulInt
6+
import com.github.contest.slidingWindow.countSubArrayWithMaxElement
7+
import com.github.contest.slidingWindow.countSubArrays
68
import com.github.contest.strings.fullJustify
79
import com.github.contest.strings.subStrHash
8-
import com.github.contest.twoPointer.trap
910
import java.util.TreeMap
1011

1112

@@ -15,7 +16,9 @@ import java.util.TreeMap
1516

1617
fun main() {
1718

18-
trap(intArrayOf(5, 1, 6, 2, 1, 2, 1, 3)).also { println(it) }
19+
countSubArrayWithMaxElement(
20+
intArrayOf(1, 3, 2, 3, 3), 2
21+
).also { println(it) }
1922

2023

2124
}

contest/src/main/java/com/github/contest/slidingWindow/SlidingWindowLeetcode.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,31 @@ private fun equalsMap(comparable: Map<String, Int>, base: Map<String, Int>): Boo
133133

134134
return true
135135
}
136+
137+
/**
138+
* 2962. Count Subarrays Where Max Element Appears at Least K Times
139+
*/
140+
141+
fun countSubArrayWithMaxElement(nums: IntArray, k: Int): Long {
142+
val maxNum = nums.maxOrNull() ?: return 0
143+
var count = 0L
144+
var left = 0
145+
var maxCount = 0
146+
147+
for (right in nums.indices) {
148+
if (nums[right] == maxNum) {
149+
maxCount++
150+
}
151+
152+
// When we have at least k occurrences, we count all subarrays ending at right
153+
while (maxCount >= k) {
154+
count += nums.size - right
155+
if (nums[left] == maxNum) {
156+
maxCount--
157+
}
158+
left++
159+
}
160+
}
161+
162+
return count
163+
}

0 commit comments

Comments
 (0)