File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
contest/src/main/java/com/github/contest/slidingWindow Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 11package 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
You can’t perform that action at this time.
0 commit comments