Skip to content

Commit 204efc4

Browse files
add 2653
1 parent 84da99d commit 204efc4

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.github.contest.slidingWindow
22

3+
import java.util.TreeSet
4+
35

46
/**
57
* 76. Minimum Window Substring
@@ -434,6 +436,46 @@ private fun String.hasSingle() = when {
434436
else -> false
435437
}
436438

439+
/**
440+
* 2653. Sliding SubArray Beauty
441+
*/
442+
443+
fun getSubArrayBeauty(nums: IntArray, k: Int, x: Int): IntArray {
444+
val map = mutableMapOf<Int, Int>()
445+
val res = IntArray(nums.size - k + 1)
446+
var left = 0
447+
var window = TreeSet<Int>()
448+
449+
for (right in nums.indices) {
450+
map[nums[right]] = map.getOrDefault(nums[right], 0) + 1
451+
window.add(nums[right])
452+
453+
if (right - left == k - 1) {
454+
var cnt = 0
455+
var beauty = 0
456+
457+
for (num in window) {
458+
cnt += map[num]!!
459+
if (cnt >= x) {
460+
beauty = if (num < 0) num else 0
461+
break
462+
}
463+
}
464+
465+
res[left] = beauty
466+
map[nums[left]] = map.getOrDefault(nums[left], 0) - 1
467+
if (map[nums[left]] == 0) {
468+
map.remove(nums[left])
469+
window.remove(nums[left])
470+
}
471+
left++
472+
}
473+
}
474+
475+
return res
476+
}
477+
478+
437479

438480

439481

0 commit comments

Comments
 (0)