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 8542f2db..d2614a26 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -152,4 +152,32 @@ class TimeMap() { private fun emptyString() = "" +} + +/** + * 380. Insert Delete GetRandom O(1) + */ + +class RandomizedSet() { + + private val store = mutableMapOf() + + fun insert(`val`: Int): Boolean = when { + store.contains(`val`) -> false + else -> { + store[`val`] = store.getOrDefault(`val`, 0) + 1 + true + } + } + + fun remove(`val`: Int): Boolean = when { + !store.contains(`val`) -> false + else -> { + store.remove(`val`) + true + } + } + + fun getRandom(): Int = store.keys.random() + } \ No newline at end of file