Skip to content

Commit 3e546dd

Browse files
committed
deploy: b5605cd
1 parent 9654fc2 commit 3e546dd

File tree

9 files changed

+7454
-7290
lines changed

9 files changed

+7454
-7290
lines changed

en/lc/769/index.html

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81430,7 +81430,7 @@ <h3 id="solution-1">Solution 1</h3>
8143081430
<!-- solution:start -->
8143181431

8143281432
<h3 id="solution-2">Solution 2</h3>
81433-
<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>
81433+
<div class="tabbed-set tabbed-alternate" data-tabs="2:6"><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" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" 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><label for="__tabbed_2_5">TypeScript</label><label for="__tabbed_2_6">JavaScript</label></div>
8143481434
<div class="tabbed-content">
8143581435
<div class="tabbed-block">
8143681436
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -81568,6 +81568,62 @@ <h3 id="solution-2">Solution 2</h3>
8156881568
<span class="p">}</span>
8156981569
</code></pre></div></td></tr></table></div>
8157081570
</div>
81571+
<div class="tabbed-block">
81572+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
81573+
<span class="normal"> 2</span>
81574+
<span class="normal"> 3</span>
81575+
<span class="normal"> 4</span>
81576+
<span class="normal"> 5</span>
81577+
<span class="normal"> 6</span>
81578+
<span class="normal"> 7</span>
81579+
<span class="normal"> 8</span>
81580+
<span class="normal"> 9</span>
81581+
<span class="normal">10</span>
81582+
<span class="normal">11</span>
81583+
<span class="normal">12</span>
81584+
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">maxChunksToSorted</span><span class="p">(</span><span class="nx">arr</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="kt">number</span><span class="w"> </span><span class="p">{</span>
81585+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">stk</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="p">[];</span>
81586+
81587+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81588+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">stk</span><span class="p">.</span><span class="nx">at</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">)</span><span class="o">!</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81589+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">top</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">pop</span><span class="p">()</span><span class="o">!</span><span class="p">;</span>
81590+
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">stk</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">at</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">)</span><span class="o">!</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">)</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span>
81591+
<span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">top</span><span class="p">);</span>
81592+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">x</span><span class="p">);</span>
81593+
<span class="w"> </span><span class="p">}</span>
81594+
81595+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
81596+
<span class="p">}</span>
81597+
</code></pre></div></td></tr></table></div>
81598+
</div>
81599+
<div class="tabbed-block">
81600+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
81601+
<span class="normal"> 2</span>
81602+
<span class="normal"> 3</span>
81603+
<span class="normal"> 4</span>
81604+
<span class="normal"> 5</span>
81605+
<span class="normal"> 6</span>
81606+
<span class="normal"> 7</span>
81607+
<span class="normal"> 8</span>
81608+
<span class="normal"> 9</span>
81609+
<span class="normal">10</span>
81610+
<span class="normal">11</span>
81611+
<span class="normal">12</span>
81612+
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">maxChunksToSorted</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81613+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">stk</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span>
81614+
81615+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81616+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">stk</span><span class="p">.</span><span class="nx">at</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
81617+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">top</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span>
81618+
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">stk</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">at</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">)</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span>
81619+
<span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">top</span><span class="p">);</span>
81620+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">x</span><span class="p">);</span>
81621+
<span class="w"> </span><span class="p">}</span>
81622+
81623+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">stk</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
81624+
<span class="p">}</span>
81625+
</code></pre></div></td></tr></table></div>
81626+
</div>
8157181627
</div>
8157281628
</div>
8157381629
<!-- solution:end -->
@@ -81601,6 +81657,11 @@ <h3 id="solution-2">Solution 2</h3>
8160181657

8160281658
<nav>
8160381659

81660+
<a href="https://github.com/rain84" class="md-author" title="@rain84">
81661+
81662+
<img src="https://avatars.githubusercontent.com/u/1732547?v=4&size=72" alt="rain84">
81663+
</a>
81664+
8160481665
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
8160581666

8160681667
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">

en/lc/974/index.html

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27762,9 +27762,9 @@
2776227762
<ul class="md-nav__list">
2776327763

2776427764
<li class="md-nav__item">
27765-
<a href="#solution-1" class="md-nav__link">
27765+
<a href="#solution-1-hash-table-prefix-sum" class="md-nav__link">
2776627766
<span class="md-ellipsis">
27767-
Solution 1
27767+
Solution 1: Hash Table + Prefix Sum
2776827768
</span>
2776927769
</a>
2777027770

@@ -81220,7 +81220,44 @@ <h2 id="description">Description</h2>
8122081220
<h2 id="solutions">Solutions</h2>
8122181221
<!-- solution:start -->
8122281222

81223-
<h3 id="solution-1">Solution 1</h3>
81223+
<h3 id="solution-1-hash-table-prefix-sum">Solution 1: Hash Table + Prefix Sum</h3>
81224+
<ol>
81225+
<li>
81226+
<p><strong>Key Insight</strong>:</p>
81227+
<ul>
81228+
<li>If there exist indices $i$ and $j$ such that $i \leq j$, and the sum of the subarray $nums[i, ..., j]$ is divisible by $k$, then $(s_j - s_i) \bmod k = 0$, this implies: $s_j \bmod k = s_i \bmod k$</li>
81229+
<li>We can use a hash table to count the occurrences of prefix sums modulo $k$ to efficiently check for subarrays satisfying the condition.</li>
81230+
</ul>
81231+
</li>
81232+
<li>
81233+
<p><strong>Prefix Sum Modulo</strong>:</p>
81234+
<ul>
81235+
<li>Use a hash table $cnt$ to count occurrences of each prefix sum modulo $k$.</li>
81236+
<li>$cnt[i]$ represents the number of prefix sums with modulo $k$ equal to $i$.</li>
81237+
<li>Initialize $cnt[0] = 1$ to account for subarrays directly divisible by $k$.</li>
81238+
</ul>
81239+
</li>
81240+
<li>
81241+
<p><strong>Algorithm</strong>:</p>
81242+
<ul>
81243+
<li>Let a variable $s$ represent the running prefix sum, starting with $s = 0$.</li>
81244+
<li>Traverse the array $nums$ from left to right.<ul>
81245+
<li>For each element $x$:<ul>
81246+
<li>Compute $s = (s + x) \bmod k$.</li>
81247+
<li>Update the result: $ans += cnt[s]$.</li>
81248+
<li>Increment $cnt[s]$ by $1$.</li>
81249+
</ul>
81250+
</li>
81251+
</ul>
81252+
</li>
81253+
<li>Return the result $ans$.</li>
81254+
</ul>
81255+
</li>
81256+
</ol>
81257+
<blockquote>
81258+
<p>Note: if $s$ is negative, adjust it to be non-negative by adding $k$ and taking modulo $k$ again.</p>
81259+
</blockquote>
81260+
<p>The time complexity is $O(n)$ and space complexity is $O(n)$ where $n$ is the length of the array $nums$.</p>
8122481261
<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>
8122581262
<div class="tabbed-content">
8122681263
<div class="tabbed-block">
@@ -81380,6 +81417,11 @@ <h3 id="solution-1">Solution 1</h3>
8138081417

8138181418
<nav>
8138281419

81420+
<a href="https://github.com/Maddieee" class="md-author" title="@Maddieee">
81421+
81422+
<img src="https://avatars.githubusercontent.com/u/10874742?v=4&size=72" alt="Maddieee">
81423+
</a>
81424+
8138381425
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
8138481426

8138581427
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">

en/search/search_index.json

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

0 commit comments

Comments
 (0)