Skip to content

Commit e36bec0

Browse files
committed
deploy: 4a32c1c
1 parent 552d235 commit e36bec0

File tree

4 files changed

+75
-10
lines changed

4 files changed

+75
-10
lines changed

en/lc/1524/index.html

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40989,9 +40989,9 @@
4098940989
<ul class="md-nav__list">
4099040990

4099140991
<li class="md-nav__item">
40992-
<a href="#solution-1" class="md-nav__link">
40992+
<a href="#solution-1-prefix-sum-counter" class="md-nav__link">
4099340993
<span class="md-ellipsis">
40994-
Solution 1
40994+
Solution 1: Prefix Sum + Counter
4099540995
</span>
4099640996
</a>
4099740997

@@ -86563,8 +86563,13 @@ <h2 id="description">Description</h2>
8656386563
<h2 id="solutions">Solutions</h2>
8656486564
<!-- solution:start -->
8656586565

86566-
<h3 id="solution-1">Solution 1</h3>
86567-
<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>
86566+
<h3 id="solution-1-prefix-sum-counter">Solution 1: Prefix Sum + Counter</h3>
86567+
<p>We define an array <span class="arithmatex">\(\textit{cnt}\)</span> of length 2 as a counter, where <span class="arithmatex">\(\textit{cnt}[0]\)</span> and <span class="arithmatex">\(\textit{cnt}[1]\)</span> represent the number of subarrays with even and odd prefix sums, respectively. Initially, <span class="arithmatex">\(\textit{cnt}[0] = 1\)</span> and <span class="arithmatex">\(\textit{cnt}[1] = 0\)</span>.</p>
86568+
<p>Next, we maintain the current prefix sum <span class="arithmatex">\(s\)</span>, initially <span class="arithmatex">\(s = 0\)</span>.</p>
86569+
<p>Traverse the array <span class="arithmatex">\(\textit{arr}\)</span>, for each element <span class="arithmatex">\(x\)</span> encountered, add the value of <span class="arithmatex">\(x\)</span> to <span class="arithmatex">\(s\)</span>, then based on the parity of <span class="arithmatex">\(s\)</span>, add the value of <span class="arithmatex">\(\textit{cnt}[s \mod 2 \oplus 1]\)</span> to the answer, and then increment the value of <span class="arithmatex">\(\textit{cnt}[s \mod 2]\)</span> by 1.</p>
86570+
<p>After the traversal, we get the answer. Note the modulo operation for the answer.</p>
86571+
<p>Time complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the array <span class="arithmatex">\(\textit{arr}\)</span>. Space complexity is <span class="arithmatex">\(O(1)\)</span>.</p>
86572+
<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">Rust</label></div>
8656886573
<div class="tabbed-content">
8656986574
<div class="tabbed-block">
8657086575
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -86696,6 +86701,36 @@ <h3 id="solution-1">Solution 1</h3>
8669686701
<span class="p">}</span>
8669786702
</code></pre></div></td></tr></table></div>
8669886703
</div>
86704+
<div class="tabbed-block">
86705+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
86706+
<span class="normal"> 2</span>
86707+
<span class="normal"> 3</span>
86708+
<span class="normal"> 4</span>
86709+
<span class="normal"> 5</span>
86710+
<span class="normal"> 6</span>
86711+
<span class="normal"> 7</span>
86712+
<span class="normal"> 8</span>
86713+
<span class="normal"> 9</span>
86714+
<span class="normal">10</span>
86715+
<span class="normal">11</span>
86716+
<span class="normal">12</span>
86717+
<span class="normal">13</span>
86718+
<span class="normal">14</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">impl</span><span class="w"> </span><span class="n">Solution</span><span class="w"> </span><span class="p">{</span>
86719+
<span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">num_of_subarrays</span><span class="p">(</span><span class="n">arr</span><span class="p">:</span><span class="w"> </span><span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">i32</span><span class="o">&gt;</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
86720+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">MOD</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1_000_000_007</span><span class="p">;</span>
86721+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">];</span>
86722+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
86723+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
86724+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">arr</span><span class="p">.</span><span class="n">iter</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
86725+
<span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">x</span><span class="p">;</span>
86726+
<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">ans</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">cnt</span><span class="p">[((</span><span class="n">s</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">usize</span><span class="p">])</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">MOD</span><span class="p">;</span>
86727+
<span class="w"> </span><span class="n">cnt</span><span class="p">[(</span><span class="n">s</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">usize</span><span class="p">]</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
86728+
<span class="w"> </span><span class="p">}</span>
86729+
<span class="w"> </span><span class="n">ans</span>
86730+
<span class="w"> </span><span class="p">}</span>
86731+
<span class="p">}</span>
86732+
</code></pre></div></td></tr></table></div>
86733+
</div>
8669986734
</div>
8670086735
</div>
8670186736
<!-- solution:end -->

en/search/search_index.json

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

lc/1524/index.html

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91371,12 +91371,12 @@ <h2 id="_2">解法</h2>
9137191371
<!-- solution:start -->
9137291372

9137391373
<h3 id="_3">方法一:前缀和 + 计数器</h3>
91374-
<p>我们定义一个长度为 <span class="arithmatex">\(2\)</span> 的数组 <span class="arithmatex">\(cnt\)</span> 作为计数器,其中 <span class="arithmatex">\(cnt[0]\)</span> 和 <span class="arithmatex">\(cnt[1]\)</span> 分别表示前缀和为偶数和奇数的子数组的个数。初始时 <span class="arithmatex">\(cnt[0] = 1\)</span>,而 <span class="arithmatex">\(cnt[1] = 0\)</span>。</p>
91374+
<p>我们定义一个长度为 <span class="arithmatex">\(2\)</span> 的数组 <span class="arithmatex">\(\textit{cnt}\)</span> 作为计数器,其中 <span class="arithmatex">\(\textit{cnt}[0]\)</span> 和 <span class="arithmatex">\(\textit{cnt}[1]\)</span> 分别表示前缀和为偶数和奇数的子数组的个数。初始时 <span class="arithmatex">\(\textit{cnt}[0] = 1\)</span>,而 <span class="arithmatex">\(\textit{cnt}[1] = 0\)</span>。</p>
9137591375
<p>接下来,我们维护当前的前缀和 <span class="arithmatex">\(s\)</span>,初始时 <span class="arithmatex">\(s = 0\)</span>。</p>
91376-
<p>遍历数组 <span class="arithmatex">\(arr\)</span>,对于遍历到的每个元素 <span class="arithmatex">\(x\)</span>,我们将 <span class="arithmatex">\(s\)</span> 的值加上 <span class="arithmatex">\(x\)</span>,然后根据 <span class="arithmatex">\(s\)</span> 的奇偶性,将 <span class="arithmatex">\(cnt[s \mod 2 \oplus 1]\)</span> 的值累加到答案中,然后我们将 <span class="arithmatex">\(cnt[s \mod 2]\)</span> 的值加 <span class="arithmatex">\(1\)</span>。</p>
91376+
<p>遍历数组 <span class="arithmatex">\(\textit{arr}\)</span>,对于遍历到的每个元素 <span class="arithmatex">\(x\)</span>,我们将 <span class="arithmatex">\(s\)</span> 的值加上 <span class="arithmatex">\(x\)</span>,然后根据 <span class="arithmatex">\(s\)</span> 的奇偶性,将 <span class="arithmatex">\(\textit{cnt}[s \mod 2 \oplus 1]\)</span> 的值累加到答案中,然后我们将 <span class="arithmatex">\(\textit{cnt}[s \mod 2]\)</span> 的值加 <span class="arithmatex">\(1\)</span>。</p>
9137791377
<p>遍历结束后,我们即可得到答案。注意答案的取模运算。</p>
91378-
<p>时间复杂度 <span class="arithmatex">\(O(n)\)</span>,空间复杂度 <span class="arithmatex">\(O(1)\)</span>。其中 <span class="arithmatex">\(n\)</span> 为数组 <span class="arithmatex">\(arr\)</span> 的长度。</p>
91379-
<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>
91378+
<p>时间复杂度 <span class="arithmatex">\(O(n)\)</span>,其中 <span class="arithmatex">\(n\)</span> 为数组 <span class="arithmatex">\(\textit{arr}\)</span> 的长度。空间复杂度 <span class="arithmatex">\(O(1)\)</span>。</p>
91379+
<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">Rust</label></div>
9138091380
<div class="tabbed-content">
9138191381
<div class="tabbed-block">
9138291382
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -91508,6 +91508,36 @@ <h3 id="_3">方法一:前缀和 + 计数器</h3>
9150891508
<span class="p">}</span>
9150991509
</code></pre></div></td></tr></table></div>
9151091510
</div>
91511+
<div class="tabbed-block">
91512+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
91513+
<span class="normal"> 2</span>
91514+
<span class="normal"> 3</span>
91515+
<span class="normal"> 4</span>
91516+
<span class="normal"> 5</span>
91517+
<span class="normal"> 6</span>
91518+
<span class="normal"> 7</span>
91519+
<span class="normal"> 8</span>
91520+
<span class="normal"> 9</span>
91521+
<span class="normal">10</span>
91522+
<span class="normal">11</span>
91523+
<span class="normal">12</span>
91524+
<span class="normal">13</span>
91525+
<span class="normal">14</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">impl</span><span class="w"> </span><span class="n">Solution</span><span class="w"> </span><span class="p">{</span>
91526+
<span class="w"> </span><span class="k">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">num_of_subarrays</span><span class="p">(</span><span class="n">arr</span><span class="p">:</span><span class="w"> </span><span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">i32</span><span class="o">&gt;</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
91527+
<span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">MOD</span><span class="p">:</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1_000_000_007</span><span class="p">;</span>
91528+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">];</span>
91529+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
91530+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
91531+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">arr</span><span class="p">.</span><span class="n">iter</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
91532+
<span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">x</span><span class="p">;</span>
91533+
<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">ans</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">cnt</span><span class="p">[((</span><span class="n">s</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">^</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">usize</span><span class="p">])</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="n">MOD</span><span class="p">;</span>
91534+
<span class="w"> </span><span class="n">cnt</span><span class="p">[(</span><span class="n">s</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">usize</span><span class="p">]</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
91535+
<span class="w"> </span><span class="p">}</span>
91536+
<span class="w"> </span><span class="n">ans</span>
91537+
<span class="w"> </span><span class="p">}</span>
91538+
<span class="p">}</span>
91539+
</code></pre></div></td></tr></table></div>
91540+
</div>
9151191541
</div>
9151291542
</div>
9151391543
<!-- solution:end -->

search/search_index.json

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

0 commit comments

Comments
 (0)