From 447ee35f6c7016ec5ea6f2644d6cbe838fe1ad1a Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Tue, 27 May 2025 17:04:06 +0100 Subject: [PATCH 1/4] add yet variant --- .../contest/hashTable/HashTableProdVariant.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 89e3e257..3aef8a92 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableProdVariant.kt @@ -166,4 +166,19 @@ fun findLHSProdVariant(nums: IntArray): Int = } } +fun findLHSProdVariantII(nums: IntArray): Int { + val freq = nums.groupBy { it }.mapValues { it.value.size } + + return freq.asSequence() + .flatMap { (key, _) -> + sequenceOf( + key to (key + 1), // Check next number + key to (key - 1) // Also check previous number (optional) + ) + } + .filter { (_, adjacent) -> freq.containsKey(adjacent) } + .maxOfOrNull { (key, adjacent) -> freq[key]!! + freq[adjacent]!! } + ?: 0 +} + From eceea8874d7d54880d100d5f2ab0ca07c9f62738 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Thu, 29 May 2025 12:58:51 +0100 Subject: [PATCH 2/4] add 284 --- .../main/java/com/github/contest/Execute.kt | 4 +-- .../github/contest/design/DesignLeetcode.kt | 25 +++++++++++++++++++ 2 files changed, 27 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 be92e32a..04a8ab16 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -4,7 +4,7 @@ package com.github.contest import com.github.contest.math.numberOfPowerfulInt import com.github.contest.slidingWindow.customStructure.rabinKarpMultiPattern import com.github.contest.slidingWindow.customStructure.slidingWindowClassic -import com.github.contest.slidingWindow.numberOfAlternatingGroups +import com.github.contest.slidingWindow.longestSubarray import com.github.contest.strings.fullJustify import com.github.contest.strings.subStrHash import java.util.TreeMap @@ -16,7 +16,7 @@ import java.util.TreeMap fun main() { - numberOfAlternatingGroups(intArrayOf(0, 1, 0)).also { println(it) } + longestSubarray(intArrayOf(8, 2, 4, 7), 4).also { println(it) } } 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 d2614a26..73c9554b 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -180,4 +180,29 @@ class RandomizedSet() { fun getRandom(): Int = store.keys.random() +} + +/** + * 284. Peeking Iterator + */ + +class PeekingIterator(iterator: Iterator) : Iterator { + + private val store = mutableListOf() + + init { + while (iterator.hasNext()) store.add(iterator.next()) + } + + fun peek(): Int { + return store.first() + } + + override fun next(): Int { + return store.removeFirst() + } + + override fun hasNext(): Boolean { + return if (store.isNotEmpty()) true else false + } } \ No newline at end of file From ede2ed66aa8f88cf0f8b16859ec0e33b377376b8 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Thu, 29 May 2025 13:07:33 +0100 Subject: [PATCH 3/4] small change --- .../src/main/java/com/github/contest/design/DesignLeetcode.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 73c9554b..ee82d46a 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -203,6 +203,6 @@ class PeekingIterator(iterator: Iterator) : Iterator { } override fun hasNext(): Boolean { - return if (store.isNotEmpty()) true else false + return store.isNotEmpty() } } \ No newline at end of file From 034db1206eae10d84dd2e01975c0231220ca83db Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 30 May 2025 17:53:55 +0100 Subject: [PATCH 4/4] add 1286 --- .../main/java/com/github/contest/Execute.kt | 4 +- .../github/contest/design/DesignLeetcode.kt | 40 +++++++++++++++++++ 2 files changed, 42 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 04a8ab16..cea10b1b 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -1,10 +1,10 @@ package com.github.contest +import com.github.contest.design.wrapper import com.github.contest.math.numberOfPowerfulInt import com.github.contest.slidingWindow.customStructure.rabinKarpMultiPattern import com.github.contest.slidingWindow.customStructure.slidingWindowClassic -import com.github.contest.slidingWindow.longestSubarray import com.github.contest.strings.fullJustify import com.github.contest.strings.subStrHash import java.util.TreeMap @@ -16,7 +16,7 @@ import java.util.TreeMap fun main() { - longestSubarray(intArrayOf(8, 2, 4, 7), 4).also { println(it) } + wrapper() } 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 ee82d46a..cf8cc404 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -205,4 +205,44 @@ class PeekingIterator(iterator: Iterator) : Iterator { override fun hasNext(): Boolean { return store.isNotEmpty() } +} + +/** + * 1286. Iterator for Combination + */ + +class CombinationIterator(characters: String, combinationLength: Int) { + + private val store = mutableListOf() + + init { + combine(0, characters, StringBuilder(), store, combinationLength) + } + + fun next(): String = store.removeFirst() + + fun hasNext(): Boolean = store.isNotEmpty() + + private fun combine( + index: Int, + str: String, + subset: StringBuilder, + store: MutableList, + limit: Int + ) { + + if (subset.length == limit) { + store.add(subset.toString()) + return + } + + if (index == str.length) return + + subset.append(str[index]) + combine(index + 1, str, subset, store, limit) + + subset.deleteAt(subset.length - 1) + combine(index + 1, str, subset, store, limit) + } + } \ No newline at end of file