Skip to content

Commit cfc08c8

Browse files
committed
deploy: 5301c76
1 parent c32d5c9 commit cfc08c8

File tree

16 files changed

+236
-275
lines changed

16 files changed

+236
-275
lines changed

contest/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80299,9 +80299,9 @@
8029980299
<ul class="md-nav__list">
8030080300

8030180301
<li class="md-nav__item">
80302-
<a href="#398-2024-05-19-1030-90-3605" class="md-nav__link">
80302+
<a href="#398-2024-05-19-1030-90-3606" class="md-nav__link">
8030380303
<span class="md-ellipsis">
80304-
第 398 场周赛(2024-05-19 10:30, 90 分钟) 参赛人数 3605
80304+
第 398 场周赛(2024-05-19 10:30, 90 分钟) 参赛人数 3606
8030580305
</span>
8030680306
</a>
8030780307

@@ -84382,7 +84382,7 @@ <h2 id="_2">段位与荣誉勋章</h2>
8438284382
<h2 id="_3">赛后估分网站</h2>
8438384383
<p>如果你想在比赛结束后估算自己的积分变化,可以访问网站 <a href="https://lccn.lbao.site/">LeetCode Contest Rating Predictor</a>。</p>
8438484384
<h2 id="_4">往期竞赛</h2>
84385-
<h4 id="398-2024-05-19-1030-90-3605">第 398 场周赛(2024-05-19 10:30, 90 分钟) 参赛人数 3605</h4>
84385+
<h4 id="398-2024-05-19-1030-90-3606">第 398 场周赛(2024-05-19 10:30, 90 分钟) 参赛人数 3606</h4>
8438684386
<ul>
8438784387
<li><a href="../lc/3151/">3151. 特殊数组 I</a></li>
8438884388
<li><a href="../lc/3152/">3152. 特殊数组 II</a></li>

en/lc/1542/index.html

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39220,9 +39220,9 @@
3922039220
<ul class="md-nav__list">
3922139221

3922239222
<li class="md-nav__item">
39223-
<a href="#solution-1" class="md-nav__link">
39223+
<a href="#solution-1-state-compression-prefix-sum" class="md-nav__link">
3922439224
<span class="md-ellipsis">
39225-
Solution 1
39225+
Solution 1: State Compression + Prefix Sum
3922639226
</span>
3922739227
</a>
3922839228

@@ -75821,8 +75821,14 @@ <h2 id="description">Description</h2>
7582175821
<h2 id="solutions">Solutions</h2>
7582275822
<!-- solution:start -->
7582375823

75824-
<h3 id="solution-1">Solution 1</h3>
75825-
<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><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" /><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></div>
75824+
<h3 id="solution-1-state-compression-prefix-sum">Solution 1: State Compression + Prefix Sum</h3>
75825+
<p>According to the problem description, the characters in the "super awesome substring" can be swapped to obtain a palindrome string. Therefore, there is at most one digit character in the "super awesome substring" that appears an odd number of times, and the rest of the digit characters appear an even number of times.</p>
75826+
<p>We can use an integer $st$ to represent the parity of the digit characters in the current prefix string, where the $i$-th bit of $st$ represents the parity of the digit character $i$, i.e., the $i$-th bit of $st$ is $1$ means that the digit character $i$ appears an odd number of times, and $0$ means that the digit character $i$ appears an even number of times.</p>
75827+
<p>If the substring $s[j,..i]$ is a "super awesome string", then the state $st$ of the prefix string $s[0,..i]$ and the state $st'$ of the prefix string $s[0,..j-1]$ differ by at most one bit in binary. This is because, if the binary bits are different, it means that the parity is different, and if the parity is different, it means that the number of times the digit appears in the substring $s[j,..i]$ is odd.</p>
75828+
<p>So, we can use a hash table or array to record the first occurrence of all states $st$. If the state $st$ of the current prefix string already exists in the hash table, it means that all bits in the binary of the state $st$ of the current prefix string and the state $st'$ of the prefix string $s[0,..j-1]$ are the same, i.e., the substring $s[j,..i]$ is a "super awesome string", and we update the maximum value of the answer. Or, we can enumerate each bit, flip the $i$-th bit of the state $st$ of the current prefix string, i.e., $st \oplus 2^i$, and then check whether $st \oplus 2^i$ is in the hash table. If it is, it means that only the $i$-th bit in the binary of the state $st$ of the current prefix string and the state $st' \oplus 2^i$ of the prefix string $s[0,..j-1]$ is different, i.e., the substring $s[j,..i]$ is a "super awesome string", and we update the maximum value of the answer.</p>
75829+
<p>Finally, return the answer.</p>
75830+
<p>The time complexity is $O(n \times C)$, and the space complexity is $O(2^C)$. Where $n$ and $C$ are the length of the string $s$ and the number of types of digit characters, respectively.</p>
75831+
<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">TypeScript</label></div>
7582675832
<div class="tabbed-content">
7582775833
<div class="tabbed-block">
7582875834
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -75996,6 +76002,56 @@ <h3 id="solution-1">Solution 1</h3>
7599676002
<span class="p">}</span>
7599776003
</code></pre></div></td></tr></table></div>
7599876004
</div>
76005+
<div class="tabbed-block">
76006+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
76007+
<span class="normal"> 2</span>
76008+
<span class="normal"> 3</span>
76009+
<span class="normal"> 4</span>
76010+
<span class="normal"> 5</span>
76011+
<span class="normal"> 6</span>
76012+
<span class="normal"> 7</span>
76013+
<span class="normal"> 8</span>
76014+
<span class="normal"> 9</span>
76015+
<span class="normal">10</span>
76016+
<span class="normal">11</span>
76017+
<span class="normal">12</span>
76018+
<span class="normal">13</span>
76019+
<span class="normal">14</span>
76020+
<span class="normal">15</span>
76021+
<span class="normal">16</span>
76022+
<span class="normal">17</span>
76023+
<span class="normal">18</span>
76024+
<span class="normal">19</span>
76025+
<span class="normal">20</span>
76026+
<span class="normal">21</span>
76027+
<span class="normal">22</span>
76028+
<span class="normal">23</span>
76029+
<span class="normal">24</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">longestAwesome</span><span class="p">(</span><span class="nx">s</span><span class="o">:</span><span class="w"> </span><span class="kt">string</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>
76030+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">d</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="mf">1024</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">);</span>
76031+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">[</span><span class="nx">st</span><span class="p">,</span><span class="w"> </span><span class="nx">ans</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
76032+
<span class="w"> </span><span class="nx">d</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
76033+
76034+
<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">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
76035+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</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="o">-</span><span class="w"> </span><span class="s1">&#39;0&#39;</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
76036+
<span class="w"> </span><span class="nx">st</span><span class="w"> </span><span class="o">^=</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="nx">v</span><span class="p">;</span>
76037+
76038+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">d</span><span class="p">[</span><span class="nx">st</span><span class="p">]</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
76039+
<span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">ans</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">d</span><span class="p">[</span><span class="nx">st</span><span class="p">]);</span>
76040+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
76041+
<span class="w"> </span><span class="nx">d</span><span class="p">[</span><span class="nx">st</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span>
76042+
<span class="w"> </span><span class="p">}</span>
76043+
76044+
<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">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">10</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">v</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
76045+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">d</span><span class="p">[</span><span class="nx">st</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="p">(</span><span class="mf">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="nx">v</span><span class="p">)]</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
76046+
<span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="nx">ans</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">d</span><span class="p">[</span><span class="nx">st</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="p">(</span><span class="mf">1</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="nx">v</span><span class="p">)]);</span>
76047+
<span class="w"> </span><span class="p">}</span>
76048+
<span class="w"> </span><span class="p">}</span>
76049+
<span class="w"> </span><span class="p">}</span>
76050+
76051+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span>
76052+
<span class="p">}</span>
76053+
</code></pre></div></td></tr></table></div>
76054+
</div>
7599976055
</div>
7600076056
</div>
7600176057
<!-- solution:end -->

en/lc/2502/index.html

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59380,18 +59380,18 @@
5938059380
<ul class="md-nav__list">
5938159381

5938259382
<li class="md-nav__item">
59383-
<a href="#solution-1" class="md-nav__link">
59383+
<a href="#solution-1-brute-force-simulation" class="md-nav__link">
5938459384
<span class="md-ellipsis">
59385-
Solution 1
59385+
Solution 1: Brute Force Simulation
5938659386
</span>
5938759387
</a>
5938859388

5938959389
</li>
5939059390

5939159391
<li class="md-nav__item">
59392-
<a href="#solution-2" class="md-nav__link">
59392+
<a href="#solution-2-hash-table-ordered-set" class="md-nav__link">
5939359393
<span class="md-ellipsis">
59394-
Solution 2
59394+
Solution 2: Hash Table + Ordered Set
5939559395
</span>
5939659396
</a>
5939759397

@@ -75856,7 +75856,12 @@ <h2 id="description">Description</h2>
7585675856
<h2 id="solutions">Solutions</h2>
7585775857
<!-- solution:start -->
7585875858

75859-
<h3 id="solution-1">Solution 1</h3>
75859+
<h3 id="solution-1-brute-force-simulation">Solution 1: Brute Force Simulation</h3>
75860+
<p>The data range of the problem is not large, so we can directly use an array to simulate the memory space.</p>
75861+
<p>During initialization, set each element in the array to $0$, indicating it's free.</p>
75862+
<p>When the <code>allocate</code> method is called, traverse the array, find <code>size</code> consecutive free memory units, set them to <code>mID</code>, and return the first index.</p>
75863+
<p>When the <code>free</code> method is called, traverse the array, set all memory units equal to <code>mID</code> to $0$, indicating they are free.</p>
75864+
<p>The time complexity is $O(n \times q)$, and the space complexity is $O(n)$, where $n$ and $q$ are the size of the memory space and the number of method calls, respectively.</p>
7586075865
<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><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" /><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></div>
7586175866
<div class="tabbed-content">
7586275867
<div class="tabbed-block">
@@ -76183,7 +76188,11 @@ <h3 id="solution-1">Solution 1</h3>
7618376188

7618476189
<!-- solution:start -->
7618576190

76186-
<h3 id="solution-2">Solution 2</h3>
76191+
<h3 id="solution-2-hash-table-ordered-set">Solution 2: Hash Table + Ordered Set</h3>
76192+
<p>We can use an ordered set to maintain the start and end indices of all allocated memory units, where the start index is the key and the end index is the value. Additionally, we use a hash table to maintain the <code>mID</code> and its corresponding start index of the memory unit.</p>
76193+
<p>When the <code>allocate</code> method is called, we traverse the ordered set, find the first free interval with a length greater than or equal to <code>size</code>, allocate it to <code>mID</code>, and update the ordered set. Then we add the <code>mID</code> and its corresponding start index of the memory unit to the hash table.</p>
76194+
<p>When the <code>free</code> method is called, we find the start index of the memory unit corresponding to <code>mID</code> from the hash table, then delete it from the ordered set, and then delete <code>mID</code> from the hash table.</p>
76195+
<p>The time complexity is $O(q \log n)$, and the space complexity is $O(n)$, where $n$ and $q$ are the size of the memory space and the number of method calls, respectively.</p>
7618776196
<div class="tabbed-set tabbed-alternate" data-tabs="2:4"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label><label for="__tabbed_2_2">Java</label><label for="__tabbed_2_3">C++</label><label for="__tabbed_2_4">Go</label></div>
7618876197
<div class="tabbed-content">
7618976198
<div class="tabbed-block">

0 commit comments

Comments
 (0)