diff --git a/kotlin/0895-maximum-frequency-stack.kt b/kotlin/0895-maximum-frequency-stack.kt new file mode 100644 index 000000000..1b34dd7a2 --- /dev/null +++ b/kotlin/0895-maximum-frequency-stack.kt @@ -0,0 +1,31 @@ +class FreqStack() { + + val countMap = HashMap() + var max = 0 + val stackMap = HashMap>() + + fun push(`val`: Int) { + val count = countMap.getOrDefault(`val`, 0) + 1 + countMap[`val`] = count + if (count > max) { + max = count + stackMap.put(max, ArrayDeque()) + } + stackMap[count]!!.addFirst(`val`) + } + + fun pop(): Int { + val res = stackMap[max]!!.removeFirst() + countMap[res] = countMap[res]!! - 1 + if(stackMap[max]!!.isEmpty()) max-- + return res + } + +} + +/** + * Your FreqStack object will be instantiated and called as such: + * var obj = FreqStack() + * obj.push(`val`) + * var param_2 = obj.pop() + */