Skip to content

Commit ec9fc9b

Browse files
committed
deploy: a6cd01a
1 parent db957ac commit ec9fc9b

File tree

12 files changed

+170
-287
lines changed

12 files changed

+170
-287
lines changed

en/lc/2505/index.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62591,9 +62591,9 @@
6259162591
<ul class="md-nav__list">
6259262592

6259362593
<li class="md-nav__item">
62594-
<a href="#solution-1" class="md-nav__link">
62594+
<a href="#solution-1-bit-manipulation" class="md-nav__link">
6259562595
<span class="md-ellipsis">
62596-
Solution 1
62596+
Solution 1: Bit Manipulation
6259762597
</span>
6259862598
</a>
6259962599

@@ -86793,7 +86793,9 @@ <h2 id="description">Description</h2>
8679386793
<h2 id="solutions">Solutions</h2>
8679486794
<!-- solution:start -->
8679586795

86796-
<h3 id="solution-1">Solution 1</h3>
86796+
<h3 id="solution-1-bit-manipulation">Solution 1: Bit Manipulation</h3>
86797+
<p>We first use an array <span class="arithmatex">\(cnt\)</span> to count the number of 1s in each bit position. Then, from the lowest bit to the highest bit, if the number of 1s in that bit position is greater than 0, we add the value represented by that bit to the answer. Then, we check if there can be a carry-over, and if so, we add it to the next bit.</p>
86798+
<p>The time complexity is <span class="arithmatex">\(O(n \times \log M)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the array and <span class="arithmatex">\(M\)</span> is the maximum value in the array.</p>
8679786799
<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>
8679886800
<div class="tabbed-content">
8679986801
<div class="tabbed-block">

en/lc/2507/index.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62635,9 +62635,9 @@
6263562635
<ul class="md-nav__list">
6263662636

6263762637
<li class="md-nav__item">
62638-
<a href="#solution-1" class="md-nav__link">
62638+
<a href="#solution-1-brute-force-simulation" class="md-nav__link">
6263962639
<span class="md-ellipsis">
62640-
Solution 1
62640+
Solution 1: Brute Force Simulation
6264162641
</span>
6264262642
</a>
6264362643

@@ -86796,7 +86796,9 @@ <h2 id="description">Description</h2>
8679686796
<h2 id="solutions">Solutions</h2>
8679786797
<!-- solution:start -->
8679886798

86799-
<h3 id="solution-1">Solution 1</h3>
86799+
<h3 id="solution-1-brute-force-simulation">Solution 1: Brute Force Simulation</h3>
86800+
<p>According to the problem statement, we can perform a process of prime factorization, i.e., continuously decompose a number into its prime factors until it can no longer be decomposed. During the process, add the prime factors each time they are decomposed, and perform this recursively or iteratively.</p>
86801+
<p>The time complexity is <span class="arithmatex">\(O(\sqrt{n})\)</span>.</p>
8680086802
<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>
8680186803
<div class="tabbed-content">
8680286804
<div class="tabbed-block">

en/lc/2508/index.html

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

6265962659
<li class="md-nav__item">
62660-
<a href="#solution-1" class="md-nav__link">
62660+
<a href="#solution-1-case-analysis" class="md-nav__link">
6266162661
<span class="md-ellipsis">
62662-
Solution 1
62662+
Solution 1: Case Analysis
6266362663
</span>
6266462664
</a>
6266562665

@@ -86795,7 +86795,13 @@ <h2 id="description">Description</h2>
8679586795
<h2 id="solutions">Solutions</h2>
8679686796
<!-- solution:start -->
8679786797

86798-
<h3 id="solution-1">Solution 1</h3>
86798+
<h3 id="solution-1-case-analysis">Solution 1: Case Analysis</h3>
86799+
<p>We first build the graph <span class="arithmatex">\(g\)</span> using <code>edges</code>, and then find all nodes with odd degrees, denoted as <span class="arithmatex">\(vs\)</span>.</p>
86800+
<p>If the length of <span class="arithmatex">\(vs\)</span> is <span class="arithmatex">\(0\)</span>, it means all nodes in the graph <span class="arithmatex">\(g\)</span> have even degrees, so we return <code>true</code>.</p>
86801+
<p>If the length of <span class="arithmatex">\(vs\)</span> is <span class="arithmatex">\(2\)</span>, it means there are two nodes with odd degrees in the graph <span class="arithmatex">\(g\)</span>. If we can directly connect these two nodes with an edge, making all nodes in the graph <span class="arithmatex">\(g\)</span> have even degrees, we return <code>true</code>. Otherwise, if we can find a third node <span class="arithmatex">\(c\)</span> such that we can connect <span class="arithmatex">\(a\)</span> and <span class="arithmatex">\(c\)</span>, and <span class="arithmatex">\(b\)</span> and <span class="arithmatex">\(c\)</span>, making all nodes in the graph <span class="arithmatex">\(g\)</span> have even degrees, we return <code>true</code>. Otherwise, we return <code>false</code>.</p>
86802+
<p>If the length of <span class="arithmatex">\(vs\)</span> is <span class="arithmatex">\(4\)</span>, we enumerate all possible pairs and check if any combination meets the conditions. If so, we return <code>true</code>; otherwise, we return <code>false</code>.</p>
86803+
<p>In other cases, we return <code>false</code>.</p>
86804+
<p>The time complexity is <span class="arithmatex">\(O(n + m)\)</span>, and the space complexity is <span class="arithmatex">\(O(n + m)\)</span>. Where <span class="arithmatex">\(n\)</span> and <span class="arithmatex">\(m\)</span> are the number of nodes and edges, respectively.</p>
8679986805
<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>
8680086806
<div class="tabbed-content">
8680186807
<div class="tabbed-block">

en/lc/2509/index.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62679,9 +62679,9 @@
6267962679
<ul class="md-nav__list">
6268062680

6268162681
<li class="md-nav__item">
62682-
<a href="#solution-1" class="md-nav__link">
62682+
<a href="#solution-1-finding-the-lowest-common-ancestor" class="md-nav__link">
6268362683
<span class="md-ellipsis">
62684-
Solution 1
62684+
Solution 1: Finding the Lowest Common Ancestor
6268562685
</span>
6268662686
</a>
6268762687

@@ -86815,7 +86815,10 @@ <h2 id="description">Description</h2>
8681586815
<h2 id="solutions">Solutions</h2>
8681686816
<!-- solution:start -->
8681786817

86818-
<h3 id="solution-1">Solution 1</h3>
86818+
<h3 id="solution-1-finding-the-lowest-common-ancestor">Solution 1: Finding the Lowest Common Ancestor</h3>
86819+
<p>For each query, we find the lowest common ancestor of the two nodes <span class="arithmatex">\(a\)</span> and <span class="arithmatex">\(b\)</span>, and record the number of steps taken upwards. The answer to the query is the number of steps plus one.</p>
86820+
<p>To find the lowest common ancestor, if <span class="arithmatex">\(a &gt; b\)</span>, we move <span class="arithmatex">\(a\)</span> to its parent node; if <span class="arithmatex">\(a &lt; b\)</span>, we move <span class="arithmatex">\(b\)</span> to its parent node. We accumulate the number of steps until <span class="arithmatex">\(a = b\)</span>.</p>
86821+
<p>The time complexity is <span class="arithmatex">\(O(n \times m)\)</span>, where <span class="arithmatex">\(m\)</span> is the length of the <code>queries</code> array.</p>
8681986822
<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>
8682086823
<div class="tabbed-content">
8682186824
<div class="tabbed-block">

en/lc/2511/index.html

Lines changed: 5 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -62723,18 +62723,9 @@
6272362723
<ul class="md-nav__list">
6272462724

6272562725
<li class="md-nav__item">
62726-
<a href="#solution-1" class="md-nav__link">
62726+
<a href="#solution-1-two-pointers" class="md-nav__link">
6272762727
<span class="md-ellipsis">
62728-
Solution 1
62729-
</span>
62730-
</a>
62731-
62732-
</li>
62733-
62734-
<li class="md-nav__item">
62735-
<a href="#solution-2" class="md-nav__link">
62736-
<span class="md-ellipsis">
62737-
Solution 2
62728+
Solution 1: Two Pointers
6273862729
</span>
6273962730
</a>
6274062731

@@ -86807,7 +86798,9 @@ <h2 id="description">Description</h2>
8680786798
<h2 id="solutions">Solutions</h2>
8680886799
<!-- solution:start -->
8680986800

86810-
<h3 id="solution-1">Solution 1</h3>
86801+
<h3 id="solution-1-two-pointers">Solution 1: Two Pointers</h3>
86802+
<p>We use a pointer <span class="arithmatex">\(i\)</span> to traverse the array <span class="arithmatex">\(forts\)</span>, and a pointer <span class="arithmatex">\(j\)</span> to start traversing from the next position of <span class="arithmatex">\(i\)</span> until it encounters the first non-zero position, i.e., <span class="arithmatex">\(forts[j] \neq 0\)</span>. If <span class="arithmatex">\(forts[i] + forts[j] = 0\)</span>, then we can move the army between <span class="arithmatex">\(i\)</span> and <span class="arithmatex">\(j\)</span>, destroying <span class="arithmatex">\(j - i - 1\)</span> enemy forts. We use the variable <span class="arithmatex">\(ans\)</span> to record the maximum number of enemy forts that can be destroyed.</p>
86803+
<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, and the space complexity is <span class="arithmatex">\(O(1)\)</span>. Where <span class="arithmatex">\(n\)</span> is the length of the array <code>forts</code>.</p>
8681186804
<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>
8681286805
<div class="tabbed-content">
8681386806
<div class="tabbed-block">
@@ -87040,61 +87033,6 @@ <h3 id="solution-1">Solution 1</h3>
8704087033
</div>
8704187034
<!-- solution:end -->
8704287035

87043-
<!-- solution:start -->
87044-
87045-
<h3 id="solution-2">Solution 2</h3>
87046-
<div class="tabbed-set tabbed-alternate" data-tabs="2:1"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Rust</label></div>
87047-
<div class="tabbed-content">
87048-
<div class="tabbed-block">
87049-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
87050-
<span class="normal"> 2</span>
87051-
<span class="normal"> 3</span>
87052-
<span class="normal"> 4</span>
87053-
<span class="normal"> 5</span>
87054-
<span class="normal"> 6</span>
87055-
<span class="normal"> 7</span>
87056-
<span class="normal"> 8</span>
87057-
<span class="normal"> 9</span>
87058-
<span class="normal">10</span>
87059-
<span class="normal">11</span>
87060-
<span class="normal">12</span>
87061-
<span class="normal">13</span>
87062-
<span class="normal">14</span>
87063-
<span class="normal">15</span>
87064-
<span class="normal">16</span>
87065-
<span class="normal">17</span>
87066-
<span class="normal">18</span>
87067-
<span class="normal">19</span>
87068-
<span class="normal">20</span>
87069-
<span class="normal">21</span>
87070-
<span class="normal">22</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>
87071-
<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">capture_forts</span><span class="p">(</span><span class="n">forts</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>
87072-
<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>
87073-
<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">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
87074-
87075-
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">((</span><span class="n">idx</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">value</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">forts</span><span class="p">.</span><span class="n">iter</span><span class="p">().</span><span class="n">enumerate</span><span class="p">().</span><span class="n">skip</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">find</span><span class="p">(</span><span class="o">|&amp;</span><span class="p">(</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87076-
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">((</span><span class="n">jdx</span><span class="p">,</span><span class="w"> </span><span class="n">_</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">forts</span>
87077-
<span class="w"> </span><span class="p">.</span><span class="n">iter</span><span class="p">()</span>
87078-
<span class="w"> </span><span class="p">.</span><span class="n">enumerate</span><span class="p">()</span>
87079-
<span class="w"> </span><span class="p">.</span><span class="n">skip</span><span class="p">(</span><span class="n">idx</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
87080-
<span class="w"> </span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="o">|&amp;</span><span class="p">(</span><span class="n">_</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
87081-
<span class="w"> </span><span class="p">{</span>
87082-
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">forts</span><span class="p">[</span><span class="n">jdx</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span>
87083-
<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ans</span><span class="p">.</span><span class="n">max</span><span class="p">(</span><span class="n">jdx</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">idx</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
87084-
<span class="w"> </span><span class="p">}</span>
87085-
<span class="w"> </span><span class="p">}</span>
87086-
<span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">idx</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
87087-
<span class="w"> </span><span class="p">}</span>
87088-
87089-
<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="kt">i32</span>
87090-
<span class="w"> </span><span class="p">}</span>
87091-
<span class="p">}</span>
87092-
</code></pre></div></td></tr></table></div>
87093-
</div>
87094-
</div>
87095-
</div>
87096-
<!-- solution:end -->
87097-
8709887036
<!-- problem:end -->
8709987037

8710087038

0 commit comments

Comments
 (0)