Stock Price Fluctuation 
<p>You are given a stream of <strong>records</strong> about a particular stock. Each record contains a <strong>timestamp</strong> and the corresponding <strong>price</strong> of the stock at that timestamp.</p>

<p>Unfortunately due to the volatile nature of the stock market, the records do not come in order. Even worse, some records may be incorrect. Another record with the same timestamp may appear later in the stream <strong>correcting</strong> the price of the previous wrong record.</p>

<p>Design an algorithm that:</p>

<ul>
	<li><strong>Updates</strong> the price of the stock at a particular timestamp, <strong>correcting</strong> the price from any previous records at the timestamp.</li>
	<li>Finds the <strong>latest price</strong> of the stock based on the current records. The <strong>latest price</strong> is the price at the latest timestamp recorded.</li>
	<li>Finds the <strong>maximum price</strong> the stock has been based on the current records.</li>
	<li>Finds the <strong>minimum price</strong> the stock has been based on the current records.</li>
</ul>

<p>Implement the <code>StockPrice</code> class:</p>

<ul>
	<li><code>StockPrice()</code> Initializes the object with no price records.</li>
	<li><code>void update(int timestamp, int price)</code> Updates the <code>price</code> of the stock at the given <code>timestamp</code>.</li>
	<li><code>int current()</code> Returns the <strong>latest price</strong> of the stock.</li>
	<li><code>int maximum()</code> Returns the <strong>maximum price</strong> of the stock.</li>
	<li><code>int minimum()</code> Returns the <strong>minimum price</strong> of the stock.</li>
</ul>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input</strong>
[&quot;StockPrice&quot;, &quot;update&quot;, &quot;update&quot;, &quot;current&quot;, &quot;maximum&quot;, &quot;update&quot;, &quot;maximum&quot;, &quot;update&quot;, &quot;minimum&quot;]
[[], [1, 10], [2, 5], [], [], [1, 3], [], [4, 2], []]
<strong>Output</strong>
[null, null, null, 5, 10, null, 5, null, 2]

<strong>Explanation</strong>
StockPrice stockPrice = new StockPrice();
stockPrice.update(1, 10); // Timestamps are [1] with corresponding prices [10].
stockPrice.update(2, 5);  // Timestamps are [1,2] with corresponding prices [10,5].
stockPrice.current();     // return 5, the latest timestamp is 2 with the price being 5.
stockPrice.maximum();     // return 10, the maximum price is 10 at timestamp 1.
stockPrice.update(1, 3);  // The previous timestamp 1 had the wrong price, so it is updated to 3.
                          // Timestamps are [1,2] with corresponding prices [3,5].
stockPrice.maximum();     // return 5, the maximum price is 5 after the correction.
stockPrice.update(4, 2);  // Timestamps are [1,2,4] with corresponding prices [3,5,2].
stockPrice.minimum();     // return 2, the minimum price is 2 at timestamp 4.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= timestamp, price &lt;= 10<sup>9</sup></code></li>
	<li>At most <code>10<sup>5</sup></code> calls will be made <strong>in total</strong> to <code>update</code>, <code>current</code>, <code>maximum</code>, and <code>minimum</code>.</li>
	<li><code>current</code>, <code>maximum</code>, and <code>minimum</code> will be called <strong>only after</strong> <code>update</code> has been called <strong>at least once</strong>.</li>
</ul>

['time-based-key-value-store']
[]
[{"value": "cpp", "text": "C++", "defaultCode": "class StockPrice {\npublic:\n    StockPrice() {\n        \n    }\n    \n    void update(int timestamp, int price) {\n        \n    }\n    \n    int current() {\n        \n    }\n    \n    int maximum() {\n        \n    }\n    \n    int minimum() {\n        \n    }\n};\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * StockPrice* obj = new StockPrice();\n * obj->update(timestamp,price);\n * int param_2 = obj->current();\n * int param_3 = obj->maximum();\n * int param_4 = obj->minimum();\n */"}, {"value": "java", "text": "Java", "defaultCode": "class StockPrice {\n\n    public StockPrice() {\n        \n    }\n    \n    public void update(int timestamp, int price) {\n        \n    }\n    \n    public int current() {\n        \n    }\n    \n    public int maximum() {\n        \n    }\n    \n    public int minimum() {\n        \n    }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * StockPrice obj = new StockPrice();\n * obj.update(timestamp,price);\n * int param_2 = obj.current();\n * int param_3 = obj.maximum();\n * int param_4 = obj.minimum();\n */"}, {"value": "python", "text": "Python", "defaultCode": "class StockPrice(object):\n\n    def __init__(self):\n        \n\n    def update(self, timestamp, price):\n        \"\"\"\n        :type timestamp: int\n        :type price: int\n        :rtype: None\n        \"\"\"\n        \n\n    def current(self):\n        \"\"\"\n        :rtype: int\n        \"\"\"\n        \n\n    def maximum(self):\n        \"\"\"\n        :rtype: int\n        \"\"\"\n        \n\n    def minimum(self):\n        \"\"\"\n        :rtype: int\n        \"\"\"\n        \n\n\n# Your StockPrice object will be instantiated and called as such:\n# obj = StockPrice()\n# obj.update(timestamp,price)\n# param_2 = obj.current()\n# param_3 = obj.maximum()\n# param_4 = obj.minimum()"}, {"value": "python3", "text": "Python3", "defaultCode": "class StockPrice:\n\n    def __init__(self):\n        \n\n    def update(self, timestamp: int, price: int) -> None:\n        \n\n    def current(self) -> int:\n        \n\n    def maximum(self) -> int:\n        \n\n    def minimum(self) -> int:\n        \n\n\n# Your StockPrice object will be instantiated and called as such:\n# obj = StockPrice()\n# obj.update(timestamp,price)\n# param_2 = obj.current()\n# param_3 = obj.maximum()\n# param_4 = obj.minimum()"}, {"value": "c", "text": "C", "defaultCode": "\n\n\ntypedef struct {\n    \n} StockPrice;\n\n\nStockPrice* stockPriceCreate() {\n    \n}\n\nvoid stockPriceUpdate(StockPrice* obj, int timestamp, int price) {\n    \n}\n\nint stockPriceCurrent(StockPrice* obj) {\n    \n}\n\nint stockPriceMaximum(StockPrice* obj) {\n    \n}\n\nint stockPriceMinimum(StockPrice* obj) {\n    \n}\n\nvoid stockPriceFree(StockPrice* obj) {\n    \n}\n\n/**\n * Your StockPrice struct will be instantiated and called as such:\n * StockPrice* obj = stockPriceCreate();\n * stockPriceUpdate(obj, timestamp, price);\n \n * int param_2 = stockPriceCurrent(obj);\n \n * int param_3 = stockPriceMaximum(obj);\n \n * int param_4 = stockPriceMinimum(obj);\n \n * stockPriceFree(obj);\n*/"}, {"value": "csharp", "text": "C#", "defaultCode": "public class StockPrice {\n\n    public StockPrice() {\n        \n    }\n    \n    public void Update(int timestamp, int price) {\n        \n    }\n    \n    public int Current() {\n        \n    }\n    \n    public int Maximum() {\n        \n    }\n    \n    public int Minimum() {\n        \n    }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * StockPrice obj = new StockPrice();\n * obj.Update(timestamp,price);\n * int param_2 = obj.Current();\n * int param_3 = obj.Maximum();\n * int param_4 = obj.Minimum();\n */"}, {"value": "javascript", "text": "JavaScript", "defaultCode": "\nvar StockPrice = function() {\n    \n};\n\n/** \n * @param {number} timestamp \n * @param {number} price\n * @return {void}\n */\nStockPrice.prototype.update = function(timestamp, price) {\n    \n};\n\n/**\n * @return {number}\n */\nStockPrice.prototype.current = function() {\n    \n};\n\n/**\n * @return {number}\n */\nStockPrice.prototype.maximum = function() {\n    \n};\n\n/**\n * @return {number}\n */\nStockPrice.prototype.minimum = function() {\n    \n};\n\n/** \n * Your StockPrice object will be instantiated and called as such:\n * var obj = new StockPrice()\n * obj.update(timestamp,price)\n * var param_2 = obj.current()\n * var param_3 = obj.maximum()\n * var param_4 = obj.minimum()\n */"}, {"value": "typescript", "text": "TypeScript", "defaultCode": "class StockPrice {\n    constructor() {\n        \n    }\n\n    update(timestamp: number, price: number): void {\n        \n    }\n\n    current(): number {\n        \n    }\n\n    maximum(): number {\n        \n    }\n\n    minimum(): number {\n        \n    }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * var obj = new StockPrice()\n * obj.update(timestamp,price)\n * var param_2 = obj.current()\n * var param_3 = obj.maximum()\n * var param_4 = obj.minimum()\n */"}, {"value": "php", "text": "PHP", "defaultCode": "class StockPrice {\n    /**\n     */\n    function __construct() {\n        \n    }\n  \n    /**\n     * @param Integer $timestamp\n     * @param Integer $price\n     * @return NULL\n     */\n    function update($timestamp, $price) {\n        \n    }\n  \n    /**\n     * @return Integer\n     */\n    function current() {\n        \n    }\n  \n    /**\n     * @return Integer\n     */\n    function maximum() {\n        \n    }\n  \n    /**\n     * @return Integer\n     */\n    function minimum() {\n        \n    }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * $obj = StockPrice();\n * $obj->update($timestamp, $price);\n * $ret_2 = $obj->current();\n * $ret_3 = $obj->maximum();\n * $ret_4 = $obj->minimum();\n */"}, {"value": "swift", "text": "Swift", "defaultCode": "\nclass StockPrice {\n\n    init() {\n        \n    }\n    \n    func update(_ timestamp: Int, _ price: Int) {\n        \n    }\n    \n    func current() -> Int {\n        \n    }\n    \n    func maximum() -> Int {\n        \n    }\n    \n    func minimum() -> Int {\n        \n    }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * let obj = StockPrice()\n * obj.update(timestamp, price)\n * let ret_2: Int = obj.current()\n * let ret_3: Int = obj.maximum()\n * let ret_4: Int = obj.minimum()\n */"}, {"value": "kotlin", "text": "Kotlin", "defaultCode": "class StockPrice() {\n\n    fun update(timestamp: Int, price: Int) {\n        \n    }\n\n    fun current(): Int {\n        \n    }\n\n    fun maximum(): Int {\n        \n    }\n\n    fun minimum(): Int {\n        \n    }\n\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * var obj = StockPrice()\n * obj.update(timestamp,price)\n * var param_2 = obj.current()\n * var param_3 = obj.maximum()\n * var param_4 = obj.minimum()\n */"}, {"value": "dart", "text": "Dart", "defaultCode": "class StockPrice {\n\n  StockPrice() {\n    \n  }\n  \n  void update(int timestamp, int price) {\n    \n  }\n  \n  int current() {\n    \n  }\n  \n  int maximum() {\n    \n  }\n  \n  int minimum() {\n    \n  }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * StockPrice obj = StockPrice();\n * obj.update(timestamp,price);\n * int param2 = obj.current();\n * int param3 = obj.maximum();\n * int param4 = obj.minimum();\n */"}, {"value": "golang", "text": "Go", "defaultCode": "type StockPrice struct {\n    \n}\n\n\nfunc Constructor() StockPrice {\n    \n}\n\n\nfunc (this *StockPrice) Update(timestamp int, price int)  {\n    \n}\n\n\nfunc (this *StockPrice) Current() int {\n    \n}\n\n\nfunc (this *StockPrice) Maximum() int {\n    \n}\n\n\nfunc (this *StockPrice) Minimum() int {\n    \n}\n\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * obj := Constructor();\n * obj.Update(timestamp,price);\n * param_2 := obj.Current();\n * param_3 := obj.Maximum();\n * param_4 := obj.Minimum();\n */"}, {"value": "ruby", "text": "Ruby", "defaultCode": "class StockPrice\n    def initialize()\n        \n    end\n\n\n=begin\n    :type timestamp: Integer\n    :type price: Integer\n    :rtype: Void\n=end\n    def update(timestamp, price)\n        \n    end\n\n\n=begin\n    :rtype: Integer\n=end\n    def current()\n        \n    end\n\n\n=begin\n    :rtype: Integer\n=end\n    def maximum()\n        \n    end\n\n\n=begin\n    :rtype: Integer\n=end\n    def minimum()\n        \n    end\n\n\nend\n\n# Your StockPrice object will be instantiated and called as such:\n# obj = StockPrice.new()\n# obj.update(timestamp, price)\n# param_2 = obj.current()\n# param_3 = obj.maximum()\n# param_4 = obj.minimum()"}, {"value": "scala", "text": "Scala", "defaultCode": "class StockPrice() {\n\n    def update(timestamp: Int, price: Int): Unit = {\n        \n    }\n\n    def current(): Int = {\n        \n    }\n\n    def maximum(): Int = {\n        \n    }\n\n    def minimum(): Int = {\n        \n    }\n\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * val obj = new StockPrice()\n * obj.update(timestamp,price)\n * val param_2 = obj.current()\n * val param_3 = obj.maximum()\n * val param_4 = obj.minimum()\n */"}, {"value": "rust", "text": "Rust", "defaultCode": "struct StockPrice {\n\n}\n\n\n/** \n * `&self` means the method takes an immutable reference.\n * If you need a mutable reference, change it to `&mut self` instead.\n */\nimpl StockPrice {\n\n    fn new() -> Self {\n        \n    }\n    \n    fn update(&self, timestamp: i32, price: i32) {\n        \n    }\n    \n    fn current(&self) -> i32 {\n        \n    }\n    \n    fn maximum(&self) -> i32 {\n        \n    }\n    \n    fn minimum(&self) -> i32 {\n        \n    }\n}\n\n/**\n * Your StockPrice object will be instantiated and called as such:\n * let obj = StockPrice::new();\n * obj.update(timestamp, price);\n * let ret_2: i32 = obj.current();\n * let ret_3: i32 = obj.maximum();\n * let ret_4: i32 = obj.minimum();\n */"}, {"value": "racket", "text": "Racket", "defaultCode": "(define stock-price%\n  (class object%\n    (super-new)\n    \n    (init-field)\n    \n    ; update : exact-integer? exact-integer? -> void?\n    (define/public (update timestamp price)\n      )\n    ; current : -> exact-integer?\n    (define/public (current)\n      )\n    ; maximum : -> exact-integer?\n    (define/public (maximum)\n      )\n    ; minimum : -> exact-integer?\n    (define/public (minimum)\n      )))\n\n;; Your stock-price% object will be instantiated and called as such:\n;; (define obj (new stock-price%))\n;; (send obj update timestamp price)\n;; (define param_2 (send obj current))\n;; (define param_3 (send obj maximum))\n;; (define param_4 (send obj minimum))"}, {"value": "erlang", "text": "Erlang", "defaultCode": "-spec stock_price_init_() -> any().\nstock_price_init_() ->\n  .\n\n-spec stock_price_update(Timestamp :: integer(), Price :: integer()) -> any().\nstock_price_update(Timestamp, Price) ->\n  .\n\n-spec stock_price_current() -> integer().\nstock_price_current() ->\n  .\n\n-spec stock_price_maximum() -> integer().\nstock_price_maximum() ->\n  .\n\n-spec stock_price_minimum() -> integer().\nstock_price_minimum() ->\n  .\n\n\n%% Your functions will be called as such:\n%% stock_price_init_(),\n%% stock_price_update(Timestamp, Price),\n%% Param_2 = stock_price_current(),\n%% Param_3 = stock_price_maximum(),\n%% Param_4 = stock_price_minimum(),\n\n%% stock_price_init_ will be called before every test case, in which you can do some necessary initializations."}, {"value": "elixir", "text": "Elixir", "defaultCode": "defmodule StockPrice do\n  @spec init_() :: any\n  def init_() do\n    \n  end\n\n  @spec update(timestamp :: integer, price :: integer) :: any\n  def update(timestamp, price) do\n    \n  end\n\n  @spec current() :: integer\n  def current() do\n    \n  end\n\n  @spec maximum() :: integer\n  def maximum() do\n    \n  end\n\n  @spec minimum() :: integer\n  def minimum() do\n    \n  end\nend\n\n# Your functions will be called as such:\n# StockPrice.init_()\n# StockPrice.update(timestamp, price)\n# param_2 = StockPrice.current()\n# param_3 = StockPrice.maximum()\n# param_4 = StockPrice.minimum()\n\n# StockPrice.init_ will be called before every test case, in which you can do some necessary initializations."}]
{
  "classname": "StockPrice",
  "constructor": {
    "params": []
  },
  "methods": [
    {
      "params": [
        {
          "type": "integer",
          "name": "timestamp"
        },
        {
          "type": "integer",
          "name": "price"
        }
      ],
      "name": "update",
      "return": {
        "type": "void"
      }
    },
    {
      "params": [],
      "name": "current",
      "return": {
        "type": "integer"
      }
    },
    {
      "params": [],
      "name": "maximum",
      "return": {
        "type": "integer"
      }
    },
    {
      "params": [],
      "name": "minimum",
      "return": {
        "type": "integer"
      }
    }
  ],
  "return": {
    "type": "boolean"
  },
  "systemdesign": true
}
{"cpp": ["C++", "<p>Compiled with <code> clang 19 </code> using the latest C++ 23 standard, and <code>libstdc++</code> provided by GCC 14.</p>\r\n\r\n<p>Your code is compiled with level two optimization (<code>-O2</code>). <a href=\"https://github.com/google/sanitizers/wiki/AddressSanitizer\" target=\"_blank\">AddressSanitizer</a> is also enabled to help detect out-of-bounds and use-after-free bugs.</p>\r\n\r\n<p>Most standard library headers are already included automatically for your convenience.</p>"], "java": ["Java", "<p><code>OpenJDK 21</code>. Using compile arguments: <code>--enable-preview --release 21</code></p>\r\n\r\n<p>Most standard library headers are already included automatically for your convenience.</p>\r\n<p>Includes <code>Pair</code> class from https://docs.oracle.com/javase/8/javafx/api/javafx/util/Pair.html.</p>"], "python": ["Python", "<p><code>Python 2.7.18</code>.</p>\r\n\r\n<p>Most libraries are already imported automatically for your convenience, such as <a href=\"https://docs.python.org/2/library/array.html\" target=\"_blank\">array</a>, <a href=\"https://docs.python.org/2/library/bisect.html\" target=\"_blank\">bisect</a>, <a href=\"https://docs.python.org/2/library/collections.html\" target=\"_blank\">collections</a>. If you need more libraries, you can import it yourself.</p>\r\n\r\n<p>For Map/TreeMap data structure, you may use <a href=\"http://www.grantjenks.com/docs/sortedcontainers/\" target=\"_blank\">sortedcontainers</a> library.</p>\r\n\r\n<p>Note that Python 2.7 <a href=\"https://www.python.org/dev/peps/pep-0373/\" target=\"_blank\">is not maintained anymore</a>. For the latest Python, please choose Python3 instead.</p>"], "c": ["C", "<p>Compiled with <code>gcc 14</code> using the gnu11 standard.</p>\r\n\r\n<p>Your code is compiled with level one optimization (<code>-O2</code>). <a href=\"https://github.com/google/sanitizers/wiki/AddressSanitizer\" target=\"_blank\">AddressSanitizer</a> is also enabled to help detect out-of-bounds and use-after-free bugs.</p>\r\n\r\n<p>Most standard library headers are already included automatically for your convenience.</p>\r\n\r\n<p>For hash table operations, you may use <a href=\"https://troydhanson.github.io/uthash/\" target=\"_blank\">uthash</a>. \"uthash.h\" is included by default. Below are some examples:</p>\r\n\r\n<p><b>1. Adding an item to a hash.</b>\r\n<pre>\r\nstruct hash_entry {\r\n    int id;            /* we'll use this field as the key */\r\n    char name[10];\r\n    UT_hash_handle hh; /* makes this structure hashable */\r\n};\r\n\r\nstruct hash_entry *users = NULL;\r\n\r\nvoid add_user(struct hash_entry *s) {\r\n    HASH_ADD_INT(users, id, s);\r\n}\r\n</pre>\r\n</p>\r\n\r\n<p><b>2. Looking up an item in a hash:</b>\r\n<pre>\r\nstruct hash_entry *find_user(int user_id) {\r\n    struct hash_entry *s;\r\n    HASH_FIND_INT(users, &user_id, s);\r\n    return s;\r\n}\r\n</pre>\r\n</p>\r\n\r\n<p><b>3. Deleting an item in a hash:</b>\r\n<pre>\r\nvoid delete_user(struct hash_entry *user) {\r\n    HASH_DEL(users, user);  \r\n}\r\n</pre>\r\n</p>"], "csharp": ["C#", "<p><a href=\"https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-13\" target=\"_blank\">C# 13</a> with .NET 9 runtime</p>"], "javascript": ["JavaScript", "<p><code>Node.js 22.14.0</code>.</p>\r\n\r\n<p>Your code is run with <code>--harmony</code> flag, enabling <a href=\"http://node.green/\" target=\"_blank\">new ES6 features</a>.</p>\r\n\r\n<p><a href=\"https://lodash.com\" target=\"_blank\">lodash.js</a> library is included by default.</p>\r\n\r\n<p>For Priority Queue / Queue data structures, you may use 6.3.2 version of <a href=\"https://github.com/datastructures-js/priority-queue/tree/v6.3.2\" target=\"_blank\">datastructures-js/priority-queue</a> and 4.2.3 version of <a href=\"https://github.com/datastructures-js/queue/tree/v4.2.3\" target=\"_blank\">datastructures-js/queue</a> and 1.0.4 version of <a href=\"https://github.com/datastructures-js/deque/tree/v1.0.4\" target=\"_blank\">datastructures-js/deque</a>.</p>"], "ruby": ["Ruby", "<p><code>Ruby 3.2</code></p>\r\n\r\n<p>Some common data structure implementations are provided in the Algorithms module: https://www.rubydoc.info/github/kanwei/algorithms/Algorithms</p>"], "swift": ["Swift", "<p><code>Swift 6.0</code>.</p>\r\n\r\n<p>You may use the following packages:<br/>\r\n<a href=\"https://github.com/apple/swift-algorithms/tree/1.2.0\" target=\"_blank\">swift-algorithms 1.2.0</a><br/>\r\n<a href=\"https://github.com/apple/swift-collections/tree/1.1.4\" target=\"_blank\">swift-collections 1.1.4</a><br/>\r\n<a href=\"https://github.com/apple/swift-numerics/tree/1.0.2\" target=\"_blank\">swift-numerics 1.0.2</a></p>"], "golang": ["Go", "<p><code>Go 1.23</code></p>\r\n<p>Support <a href=\"https://pkg.go.dev/github.com/emirpasic/gods@v1.18.1\" target=\"_blank\">https://pkg.go.dev/github.com/emirpasic/gods@v1.18.1</a> and <a href=\"https://pkg.go.dev/github.com/emirpasic/gods/v2@v2.0.0-alpha\" target=\"_blank\">https://pkg.go.dev/github.com/emirpasic/gods/v2@v2.0.0-alpha</a> library.</p>"], "python3": ["Python3", "<p><code>Python 3.11</code>.</p>\r\n\r\n<p>Most libraries are already imported automatically for your convenience, such as <a href=\"https://docs.python.org/3/library/array.html\" target=\"_blank\">array</a>, <a href=\"https://docs.python.org/3/library/bisect.html\" target=\"_blank\">bisect</a>, <a href=\"https://docs.python.org/3/library/collections.html\" target=\"_blank\">collections</a>. If you need more libraries, you can import it yourself.</p>\r\n\r\n<p>For Map/TreeMap data structure, you may use <a href=\"http://www.grantjenks.com/docs/sortedcontainers/\" target=\"_blank\">sortedcontainers</a> library.</p>"], "scala": ["Scala", "<p><code>Scala 3.3.1</code>.</p>"], "kotlin": ["Kotlin", "<p><code>Kotlin 2.1.10</code>.</p>"], "rust": ["Rust", "<p><code>Rust 1.85.0</code>. Your code will be compiled with <code>opt-level</code> 2.</p>\r\n\r\n<p>Supports <a href=\"https://crates.io/crates/rand\" target=\"_blank\">rand v0.8</a> and <a href=\"https://crates.io/crates/regex\" target=\"_blank\">regex\u00a0v1</a> and <a href=\"https://crates.io/crates/itertools\" target=\"_blank\">itertools\u00a0v0.14</a> from crates.io</p>"], "php": ["PHP", "<p><code>PHP 8.2</code>.</p>\r\n<p>With bcmath module</p>"], "typescript": ["Typescript", "<p><code>TypeScript 5.7.3, Node.js 22.14.0</code>.</p>\r\n\r\n<p>Compile Options: <code>--alwaysStrict --strictBindCallApply --strictFunctionTypes --target ES2024</code></p>\r\n\r\n<p><a href=\"https://lodash.com\" target=\"_blank\">lodash.js</a> library is included by default.</p>\r\n\r\n<p>For Priority Queue / Queue data structures, you may use 6.3.2 version of <a href=\"https://github.com/datastructures-js/priority-queue/tree/v6.3.2\" target=\"_blank\">datastructures-js/priority-queue</a> and 4.2.3 version of <a href=\"https://github.com/datastructures-js/queue/tree/v4.2.3\" target=\"_blank\">datastructures-js/queue</a> and 1.0.4 version of <a href=\"https://github.com/datastructures-js/deque/tree/v1.0.4\" target=\"_blank\">datastructures-js/deque</a>.</p>"], "racket": ["Racket", "<p><a href=\"https://docs.racket-lang.org/guide/performance.html#%28tech._c%29\" target=\"_blank\">Racket CS</a> v8.15</p>\r\n\r\n<p>Using <code>#lang racket</code></p>\r\n\r\n<p>Required <code>data/gvector data/queue data/order data/heap</code> automatically for your convenience</p>"], "erlang": ["Erlang", "Erlang/OTP 26"], "elixir": ["Elixir", "Elixir 1.17 with Erlang/OTP 26"], "dart": ["Dart", "<p>Dart 3.2. You may use package <a href=\"https://pub.dev/packages/collection/versions/1.18.0\" target=\"_blank\">collection</a></p>\r\n\r\n<p>Your code will be run directly without compiling</p>"]}
['Hash Table', 'Design', 'Heap (Priority Queue)', 'Data Stream', 'Ordered Set']