diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index 088257d..5a05730 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -17,6 +17,7 @@ import java.util.TreeMap fun main() { findAnagrams("abnkjhgidhr", "abn").also { println(it) } + } infix fun Int.myRange(to: Int): IntRange { 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 7415521..ed079e1 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -1,5 +1,7 @@ package com.github.contest.design +import java.util.LinkedList + /** * 1352. Product of the Last K Numbers */ @@ -331,4 +333,41 @@ class RLEIterator(private val encoding: IntArray) { return 0 } +} + +/** + * 933. Number of Recent Calls + */ + +class RecentCounter() { + + private val queue = LinkedList() + + fun ping(t: Int): Int { + queue.offer(t) + + while (queue.peek() < t - 3000) queue.poll() + + return queue.size + } + +} + +/** + * 901. Online Stock Span + */ + +class StockSpanner() { + + private val stocks = ArrayDeque>() + + fun next(price: Int): Int { + var span = 1 + + while (stocks.isNotEmpty() && stocks.last().first <= price) span += stocks.removeLast().second + + stocks.addLast(price to span) + return span + } + } \ No newline at end of file