Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2fb1988

Browse files
[ACCEPTED] Count Subarrays Where Max Element Appears at Least K Times
1 parent a2037a4 commit 2fb1988

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

‎src/medium/CountSubarraysWhereMaxElementAppearsAtLeastKTimes2962.kt

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,25 @@ package medium
22

33
object CountSubarraysWhereMaxElementAppearsAtLeastKTimes2962 {
44
fun countSubarrays(nums: IntArray, k: Int): Long {
5-
val maximumNum = nums.max()
6-
val n = nums.size
7-
var left = 0
8-
var right = 0
9-
var subArrayCount = 0L
5+
val maxElement = nums.max()
6+
var maxElementsInWindow = 0
7+
var start = 0
8+
var result = 0L
109

11-
while (left < n) {
12-
while (right < n) {
13-
val subArraySize = (right - left) + 1
14-
if (subArraySize < k) {
15-
right++
16-
continue
17-
}
18-
19-
val subArray = nums.copyOfRange(left, right + 1)
10+
for (end in 0 until nums.size) {
11+
if (nums[end] == maxElement) {
12+
maxElementsInWindow++
13+
}
2014

21-
if (subArray.IsArrayMaxElementAppearAtLeastKTimes(maximumNum, k))
22-
subArrayCount++
23-
right++
15+
while (maxElementsInWindow == k) {
16+
if (nums[start] == maxElement)
17+
maxElementsInWindow--
18+
start++
2419
}
25-
left++
26-
right = left
20+
result += start
2721
}
28-
return subArrayCount
22+
23+
return result
2924
}
3025

3126
fun IntArray.IsArrayMaxElementAppearAtLeastKTimes(max: Int, k: Int): Boolean {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /