From 781180fb5db284452663760624990c68f8d3cf0d Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Wed, 23 Apr 2025 16:58:06 +0100 Subject: [PATCH 1/8] add 1399 --- .../com/github/contest/math/MathLeetcode.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/contest/src/main/java/com/github/contest/math/MathLeetcode.kt b/contest/src/main/java/com/github/contest/math/MathLeetcode.kt index 39ac2eac..e018a27f 100644 --- a/contest/src/main/java/com/github/contest/math/MathLeetcode.kt +++ b/contest/src/main/java/com/github/contest/math/MathLeetcode.kt @@ -132,6 +132,31 @@ fun countSymmetricIntegers(low: Int, high: Int): Int { return count } +/** + * 1399. Count Largest Group + */ + +fun countLargestGroup(n: Int): Int { + val freq = IntArray(40) + var maxCount = 0 + + for (i in 1..n) { + var sum = 0 + var x = i + while (x > 0) { + sum += x % 10 + x /= 10 + } + freq[sum]++ + maxCount = maxOf(maxCount, freq[sum]) + } + + var groupCount = 0 + for (count in freq) if (count == maxCount) groupCount++ + + return groupCount +} + /** * */ From 0ebf441a000334abf8bbc242dd7376ba961c7fa6 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Thu, 24 Apr 2025 18:53:42 +0100 Subject: [PATCH 2/8] add 2799 --- .../contest/hashTable/HashTableLeetcode.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt index 431aa200..7abc32aa 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt @@ -411,4 +411,37 @@ fun countPairs(nums: IntArray, k: Int): Int { } return count +} + +/** + * 2799. Count Complete SubArrays in an Array + */ + +fun countCompleteSubArrays(nums: IntArray): Int { + if (nums.size == 1) return 1 + + var count = 0 + val distinct = distinctElementsOfArray(nums) + var lastIndex = nums.size - 1 + + for (i in 0 until nums.size) { + var j = i + val set = mutableSetOf() + + while (j < nums.size && set.size != distinct) { + set.add(nums[j]) + j++ + } + j-- + if (set.size == distinct) count += (lastIndex - j) + 1 + } + + return count + +} + +private fun distinctElementsOfArray(nums: IntArray): Int { + val set = mutableSetOf() + for (num in nums) set.add(num) + return set.size } \ No newline at end of file From 5195f0d6946a7e049851c840d5de4f59979ee471 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 25 Apr 2025 10:17:38 +0100 Subject: [PATCH 3/8] add 2799 prod variant --- .../contest/hashTable/HashTableLeetcode.kt | 2 +- .../contest/hashTable/HashTableProdVariant.kt | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt index 7abc32aa..c64e1281 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt @@ -424,7 +424,7 @@ fun countCompleteSubArrays(nums: IntArray): Int { val distinct = distinctElementsOfArray(nums) var lastIndex = nums.size - 1 - for (i in 0 until nums.size) { + for (i in nums.indices) { var j = i val set = mutableSetOf() diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt index 5245dcdb..827334f0 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt @@ -48,3 +48,30 @@ fun findMissingAndRepeatedValuesProdVariant(grid: Array): IntArray { } +/** + * 2799. Count Complete Subarrays in an Array + * Prod Variant + */ + +fun countCompleteSubArrayProdVariant(nums: IntArray): Int { + val unique = nums.distinct().size + var count = 0 + val freq = mutableMapOf() + var left = 0 + val n = nums.size + + nums.forEachIndexed { right, num -> + freq[num] = freq.getOrDefault(num, 0) + 1 + + while (freq.size == unique) { + count += n - right + val delete = nums[left] + freq[delete] = freq.getOrDefault(delete, 0) - 1 + if (freq[delete] == 0) freq.remove(delete) + left++ + } + } + + return count +} + From 2160d9350498260b9c028559f77a4abd925a1c08 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 25 Apr 2025 11:30:38 +0100 Subject: [PATCH 4/8] add 58 easy problem --- .../github/contest/strings/StringsLeetcode.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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 8fe93934..b4b6f093 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt @@ -369,6 +369,26 @@ private fun compress(input: String): String { return res } +/** + * 58. Length of Last Word + */ + + +fun lengthOfLastWord(s: String): Int { + var i = s.length - 1 + var size = 0 + + while (i >= 0 && s[i] == ' ') i-- + + while (i >= 0 && s[i] != ' ') { + size++ + i-- + } + + return size +} + + /** * */ From db8605ce6e2dfc171a70683a29b4ccf9e7b8378d Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 25 Apr 2025 11:34:41 +0100 Subject: [PATCH 5/8] add 58 prod variant --- .../com/github/contest/strings/StringsProdVariant.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt index f94a8152..a92aa82a 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt @@ -58,4 +58,11 @@ fun smallestStringProdVariant(s: String): String { } String(modifiedChars) } -} \ No newline at end of file +} + +/** + * 58. Length of Last Word + * Prod Variant + */ + +fun lengthOfLastWordProdVariant(s: String): Int = s.trim().split(" ").lastOrNull()?.length ?: 0 \ No newline at end of file From d8facc18ca7479edf54ebcb361014d9bd671cefa Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 25 Apr 2025 13:06:52 +0100 Subject: [PATCH 6/8] add 12 --- .../main/java/com/github/contest/Execute.kt | 4 +-- .../contest/hashTable/HashTableLeetcode.kt | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index 36348384..623b7699 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -1,8 +1,8 @@ package com.github.contest -import com.github.contest.binarySearch.twoSum import com.github.contest.hashTable.countGoodAlternativeSolution +import com.github.contest.hashTable.intToRoman import com.github.contest.math.numberOfPowerfulInt import com.github.contest.strings.fullJustify import com.github.contest.strings.subStrHash @@ -15,7 +15,7 @@ import java.util.TreeMap fun main() { - twoSum(intArrayOf(-1, 0), -1).printArray() + intToRoman(3799).also { println(it) } } diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt index c64e1281..2bb6dee3 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt @@ -444,4 +444,35 @@ private fun distinctElementsOfArray(nums: IntArray): Int { val set = mutableSetOf() for (num in nums) set.add(num) return set.size +} + +/** + * 12. Integer to Roman + */ + +fun intToRoman(num: Int): String { + val values = listOf( + 1000 to "M", + 900 to "CM", + 500 to "D", + 400 to "CD", + 100 to "C", + 90 to "XC", + 50 to "L", + 40 to "XL", + 10 to "X", + 9 to "IX", + 5 to "V", + 4 to "IV", + 1 to "I" + ) + var n = num + val result = StringBuilder() + for ((value, symbol) in values) { + while (n >= value) { + result.append(symbol) + n -= value + } + } + return result.toString() } \ No newline at end of file From 21d80faababffa93ce4fd279cfff7c761c9b2670 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 25 Apr 2025 13:18:12 +0100 Subject: [PATCH 7/8] add 12 prod variant --- .../contest/hashTable/HashTableLeetcode.kt | 4 +- .../contest/hashTable/HashTableProdVariant.kt | 37 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt index 2bb6dee3..42f536e3 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt @@ -475,4 +475,6 @@ fun intToRoman(num: Int): String { } } return result.toString() -} \ No newline at end of file +} + + diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt index 827334f0..2e29e599 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt @@ -75,3 +75,40 @@ fun countCompleteSubArrayProdVariant(nums: IntArray): Int { return count } +/** + * 12. Integer to Roman + * Prod Variant + */ + +fun intToRomanProdVariant(num: Int): String { + val values = mapOf( + 1000 to "M", + 900 to "CM", + 500 to "D", + 400 to "CD", + 100 to "C", + 90 to "XC", + 50 to "L", + 40 to "XL", + 10 to "X", + 9 to "IX", + 5 to "V", + 4 to "IV", + 1 to "I" + ) + return when { + values.contains(num) -> values.getOrDefault(num, "") + else -> { + var n = num + buildString { + values.forEach { (value, symbol) -> + while (n >= value) { + append(symbol) + n -= value + } + } + } + } + } +} + From 553a57d6a6b21100c740dfa21b46b1eb798ceb97 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 25 Apr 2025 13:19:06 +0100 Subject: [PATCH 8/8] change for estetic --- .../contest/hashTable/HashTableProdVariant.kt | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt index 2e29e599..2810adde 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt @@ -96,16 +96,14 @@ fun intToRomanProdVariant(num: Int): String { 4 to "IV", 1 to "I" ) + var n = num return when { values.contains(num) -> values.getOrDefault(num, "") - else -> { - var n = num - buildString { - values.forEach { (value, symbol) -> - while (n >= value) { - append(symbol) - n -= value - } + else -> buildString { + values.forEach { (value, symbol) -> + while (n >= value) { + append(symbol) + n -= value } } }