Skip to content

Commit 2f81de3

Browse files
Merge pull request #195
add new problems 19.05
2 parents a9f9fe2 + 204efc4 commit 2f81de3

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

contest/src/main/java/com/github/contest/math/MathLeetcode.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,21 @@ private fun isEven(num: Int): Boolean {
213213
return even
214214
}
215215

216+
/**
217+
* 3024. Type of Triangle
218+
*/
219+
220+
fun triangleType(nums: IntArray): String {
221+
nums.sort()
222+
val first = nums.first()
223+
val mid = nums[nums.size / 2]
224+
val last = nums.last()
225+
226+
return when {
227+
first + mid <= last -> "none"
228+
first == mid && mid == last -> "equilateral"
229+
first == mid || mid == last -> "isosceles"
230+
else -> "scalene"
231+
}
232+
}
216233

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

Lines changed: 87 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
@@ -391,5 +393,90 @@ private fun findDuplicate(s: String, length: Int): String? {
391393
return null
392394
}
393395

396+
/**
397+
* 1763. Longest Nice Substring
398+
*/
399+
400+
fun longestNiceSubstring(s: String): String {
401+
if (s.hasSingle()) return ""
402+
403+
404+
(s.length downTo 2).forEach { window ->
405+
s.windowed(window).forEach {
406+
if (it.isNice()) return it
407+
}
408+
409+
}
410+
411+
return emptyString()
412+
}
413+
414+
private fun String.isNice(): Boolean {
415+
val set = mutableSetOf<Char>()
416+
417+
for (char in this) {
418+
set.add(char)
419+
}
420+
421+
for (char in this) {
422+
if (char !in 'A'..'Z') {
423+
if (!set.contains(char.uppercaseChar())) return false
424+
} else {
425+
if (!set.contains(char.lowercaseChar())) return false
426+
}
427+
}
428+
429+
return true
430+
}
431+
432+
private fun emptyString() = ""
433+
434+
private fun String.hasSingle() = when {
435+
length == 1 -> true
436+
else -> false
437+
}
438+
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+
479+
480+
394481

395482

0 commit comments

Comments
 (0)