From c2326d15227595541edccd188c6baf6f368419cc Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sun, 6 Jul 2025 13:53:35 +0100 Subject: [PATCH 1/2] add 1865 --- .../github/contest/design/DesignLeetcode.kt | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt index ed079e1..c75e6e7 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -40,8 +40,7 @@ class ProductOfNumbers() { class WordDictionary() { data class TrieNode( - val children: MutableMap = mutableMapOf(), - var isEndOfWord: Boolean = false + val children: MutableMap = mutableMapOf(), var isEndOfWord: Boolean = false ) private val root = TrieNode() @@ -226,11 +225,7 @@ class CombinationIterator(characters: String, combinationLength: Int) { fun hasNext(): Boolean = store.isNotEmpty() private fun combine( - index: Int, - str: String, - subset: StringBuilder, - store: MutableList, - limit: Int + index: Int, str: String, subset: StringBuilder, store: MutableList, limit: Int ) { if (subset.length == limit) { @@ -370,4 +365,42 @@ class StockSpanner() { return span } +} + +/** + * 1865. Finding Pairs With a Certain Sum + */ + +class FindSumPairs(private val nums1: IntArray, private val nums2: IntArray) { + + private val second = mutableListOf() + private val freq = mutableMapOf() + + init { + for (elem in nums2) { + val e = elem.toLong() + second.add(e) + freq[e] = freq.getOrDefault(e, 0) + 1 + } + } + + fun add(index: Int, `val`: Int) { + val old = second[index] + second[index] = second[index] + `val` + val new = second[index] + freq[old] = freq.getOrDefault(old, 0) - 1 + if (freq[old] == 0) freq.remove(old) + freq[new] = freq.getOrDefault(new, 0) + 1 + } + + fun count(tot: Int): Int { + var c = 0 + for (elem in nums1) { + val target = tot - elem + if (freq.contains(target.toLong())) c += freq.getOrDefault(target.toLong(), 0) + } + + return c + } + } \ No newline at end of file From 0316fb67500671ceae624e4d68296abcca76b395 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Tue, 15 Jul 2025 15:06:39 +0100 Subject: [PATCH 2/2] add 3136 --- .../github/contest/strings/StringsLeetcode.kt | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt index 76e5a1b..927e5a9 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt @@ -1,7 +1,5 @@ package com.github.contest.strings -import java.math.BigInteger - /** * 848. Shifting Letters */ @@ -389,7 +387,6 @@ fun lengthOfLastWord(s: String): Int { } - /** * 2138. Divide a String Into Groups of Size k */ @@ -438,4 +435,40 @@ private fun remainingFill(strs: Array, pattern: Char, k: Int) { } } +/** + * 3136. Valid Word + */ + +fun isValid(word: String): Boolean { + if (word.length < 3) return false + + var vowels = 0 + var consonants = 0 + + for (char in word) { + if (isNotDigit(char) && isNotLetter(char)) return false + if (isLetter(char)) { + if (isVowel(char)) vowels++ + else consonants++ + } + } + + return !(vowels == 0 || consonants == 0) +} + +private fun isNotDigit(char: Char) = when { + char in '0'..'9' -> false + else -> true +} + +private fun isNotLetter(char: Char) = when { + char in 'a'..'z' || char in 'A'..'Z' -> false + else -> true +} + +private fun isVowel(char: Char) = when { + char in "aeiou" || char in "AEIOU" -> true + else -> false +} +