Skip to content

Commit d334914

Browse files
committed
deploy: 444c465
1 parent 7af4ce3 commit d334914

File tree

8 files changed

+7245
-7163
lines changed

8 files changed

+7245
-7163
lines changed

en/lc/1845/index.html

Lines changed: 64 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -45891,7 +45891,7 @@
4589145891
<li class="md-nav__item">
4589245892
<a href="#solution-1-priority-queue-min-heap" class="md-nav__link">
4589345893
<span class="md-ellipsis">
45894-
Solution 1: Priority Queue (Min Heap)
45894+
Solution 1: Priority Queue (Min-Heap)
4589545895
</span>
4589645896
</a>
4589745897

@@ -79341,13 +79341,12 @@ <h2 id="description">Description</h2>
7934179341
<h2 id="solutions">Solutions</h2>
7934279342
<!-- solution:start -->
7934379343

79344-
<h3 id="solution-1-priority-queue-min-heap">Solution 1: Priority Queue (Min Heap)</h3>
79345-
<p>We can use a priority queue (min heap) to maintain the smallest number of reservable seats.</p>
79346-
<p>Initially, put all seat numbers into the priority queue.</p>
79347-
<p>When the <code>reserve</code> method is called, take out the smallest number from the priority queue, which is the smallest number of reservable seats.</p>
79348-
<p>When the <code>unreserve</code> method is called, put the seat number back into the priority queue.</p>
79349-
<p>The time complexity is $O(n \times \log n)$, and the space complexity is $O(n)$. Where $n$ is the number of seats.</p>
79350-
<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">C#</label></div>
79344+
<h3 id="solution-1-priority-queue-min-heap">Solution 1: Priority Queue (Min-Heap)</h3>
79345+
<p>We define a priority queue (min-heap) $\textit{q}$ to store all the available seat numbers. Initially, we add all seat numbers from $1$ to $n$ into $\textit{q}$.</p>
79346+
<p>When calling the <code>reserve</code> method, we pop the top element from $\textit{q}$, which is the smallest available seat number.</p>
79347+
<p>When calling the <code>unreserve</code> method, we add the seat number back into $\textit{q}$.</p>
79348+
<p>In terms of time complexity, the initialization time complexity is $O(n)$ or $O(n \times \log n)$, and the time complexity of the <code>reserve</code> and <code>unreserve</code> methods is both $O(\log n)$. The space complexity is $O(n)$.</p>
79349+
<div class="tabbed-set tabbed-alternate" data-tabs="1:6"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">C#</label></div>
7935179350
<div class="tabbed-content">
7935279351
<div class="tabbed-block">
7935379352
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -79364,11 +79363,9 @@ <h3 id="solution-1-priority-queue-min-heap">Solution 1: Priority Queue (Min Heap
7936479363
<span class="normal">12</span>
7936579364
<span class="normal">13</span>
7936679365
<span class="normal">14</span>
79367-
<span class="normal">15</span>
79368-
<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">SeatManager</span><span class="p">:</span>
79366+
<span class="normal">15</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">SeatManager</span><span class="p">:</span>
7936979367
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">):</span>
7937079368
<span class="bp">self</span><span class="o">.</span><span class="n">q</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
79371-
<span class="n">heapify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">q</span><span class="p">)</span>
7937279369

7937379370
<span class="k">def</span> <span class="nf">reserve</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
7937479371
<span class="k">return</span> <span class="n">heappop</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">q</span><span class="p">)</span>
@@ -79591,27 +79588,71 @@ <h3 id="solution-1-priority-queue-min-heap">Solution 1: Priority Queue (Min Heap
7959179588
<span class="normal">21</span>
7959279589
<span class="normal">22</span>
7959379590
<span class="normal">23</span>
79594-
<span class="normal">24</span>
79595-
<span class="normal">25</span>
79596-
<span class="normal">26</span>
79597-
<span class="normal">27</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">public</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">SeatManager</span><span class="w"> </span><span class="p">{</span>
79598-
<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="n">SortedSet</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">availableSeats</span><span class="p">;</span>
79591+
<span class="normal">24</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nx">SeatManager</span><span class="w"> </span><span class="p">{</span>
79592+
<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">q</span><span class="o">:</span><span class="w"> </span><span class="kt">typeof</span><span class="w"> </span><span class="nx">MinPriorityQueue</span><span class="p">;</span>
79593+
<span class="w"> </span><span class="kr">constructor</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79594+
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">MinPriorityQueue</span><span class="p">();</span>
79595+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79596+
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">q</span><span class="p">.</span><span class="nx">enqueue</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
79597+
<span class="w"> </span><span class="p">}</span>
79598+
<span class="w"> </span><span class="p">}</span>
79599+
79600+
<span class="w"> </span><span class="nx">reserve</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
79601+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">q</span><span class="p">.</span><span class="nx">dequeue</span><span class="p">().</span><span class="nx">element</span><span class="p">;</span>
79602+
<span class="w"> </span><span class="p">}</span>
79603+
79604+
<span class="w"> </span><span class="nx">unreserve</span><span class="p">(</span><span class="nx">seatNumber</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
79605+
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">q</span><span class="p">.</span><span class="nx">enqueue</span><span class="p">(</span><span class="nx">seatNumber</span><span class="p">);</span>
79606+
<span class="w"> </span><span class="p">}</span>
79607+
<span class="p">}</span>
79608+
79609+
<span class="cm">/**</span>
79610+
<span class="cm"> * Your SeatManager object will be instantiated and called as such:</span>
79611+
<span class="cm"> * var obj = new SeatManager(n)</span>
79612+
<span class="cm"> * var param_1 = obj.reserve()</span>
79613+
<span class="cm"> * obj.unreserve(seatNumber)</span>
79614+
<span class="cm"> */</span>
79615+
</code></pre></div></td></tr></table></div>
79616+
</div>
79617+
<div class="tabbed-block">
79618+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
79619+
<span class="normal"> 2</span>
79620+
<span class="normal"> 3</span>
79621+
<span class="normal"> 4</span>
79622+
<span class="normal"> 5</span>
79623+
<span class="normal"> 6</span>
79624+
<span class="normal"> 7</span>
79625+
<span class="normal"> 8</span>
79626+
<span class="normal"> 9</span>
79627+
<span class="normal">10</span>
79628+
<span class="normal">11</span>
79629+
<span class="normal">12</span>
79630+
<span class="normal">13</span>
79631+
<span class="normal">14</span>
79632+
<span class="normal">15</span>
79633+
<span class="normal">16</span>
79634+
<span class="normal">17</span>
79635+
<span class="normal">18</span>
79636+
<span class="normal">19</span>
79637+
<span class="normal">20</span>
79638+
<span class="normal">21</span>
79639+
<span class="normal">22</span>
79640+
<span class="normal">23</span>
79641+
<span class="normal">24</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">public</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">SeatManager</span><span class="w"> </span><span class="p">{</span>
79642+
<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="n">PriorityQueue</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">PriorityQueue</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="o">&gt;</span><span class="p">();</span>
7959979643

7960079644
<span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nf">SeatManager</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79601-
<span class="w"> </span><span class="n">availableSeats</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">SortedSet</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="p">();</span>
79602-
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79603-
<span class="w"> </span><span class="n">availableSeats</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
79645+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="n">n</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79646+
<span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">Enqueue</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">);</span>
7960479647
<span class="w"> </span><span class="p">}</span>
7960579648
<span class="w"> </span><span class="p">}</span>
7960679649

7960779650
<span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">Reserve</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
79608-
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">reservedSeat</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">availableSeats</span><span class="p">.</span><span class="n">Min</span><span class="p">;</span>
79609-
<span class="w"> </span><span class="n">availableSeats</span><span class="p">.</span><span class="n">Remove</span><span class="p">(</span><span class="n">reservedSeat</span><span class="p">);</span>
79610-
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">reservedSeat</span><span class="p">;</span>
79651+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">Dequeue</span><span class="p">();</span>
7961179652
<span class="w"> </span><span class="p">}</span>
7961279653

7961379654
<span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">Unreserve</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">seatNumber</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
79614-
<span class="w"> </span><span class="n">availableSeats</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="n">seatNumber</span><span class="p">);</span>
79655+
<span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="n">Enqueue</span><span class="p">(</span><span class="n">seatNumber</span><span class="p">,</span><span class="w"> </span><span class="n">seatNumber</span><span class="p">);</span>
7961579656
<span class="w"> </span><span class="p">}</span>
7961679657
<span class="p">}</span>
7961779658

en/search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)