Skip to content

Commit e8ab66c

Browse files
committed
deploy: 7bdd8c2
1 parent 3bd6b1d commit e8ab66c

File tree

8 files changed

+3607
-3610
lines changed

8 files changed

+3607
-3610
lines changed

en/lc/131/index.html

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10343,9 +10343,9 @@
1034310343
<ul class="md-nav__list">
1034410344

1034510345
<li class="md-nav__item">
10346-
<a href="#solution-1" class="md-nav__link">
10346+
<a href="#solution-1-preprocessing-dfs-backtracking" class="md-nav__link">
1034710347
<span class="md-ellipsis">
10348-
Solution 1
10348+
Solution 1: Preprocessing + DFS (Backtracking)
1034910349
</span>
1035010350
</a>
1035110351

@@ -86536,7 +86536,12 @@ <h2 id="description">Description</h2>
8653686536
<h2 id="solutions">Solutions</h2>
8653786537
<!-- solution:start -->
8653886538

86539-
<h3 id="solution-1">Solution 1</h3>
86539+
<h3 id="solution-1-preprocessing-dfs-backtracking">Solution 1: Preprocessing + DFS (Backtracking)</h3>
86540+
<p>We can use dynamic programming to preprocess whether any substring in the string is a palindrome, i.e., <span class="arithmatex">\(f[i][j]\)</span> indicates whether the substring <span class="arithmatex">\(s[i..j]\)</span> is a palindrome.</p>
86541+
<p>Next, we design a function <span class="arithmatex">\(dfs(i)\)</span>, which represents starting from the <span class="arithmatex">\(i\)</span>-th character of the string and partitioning it into several palindromic substrings, with the current partition scheme being <span class="arithmatex">\(t\)</span>.</p>
86542+
<p>If <span class="arithmatex">\(i = |s|\)</span>, it means the partitioning is complete, and we add <span class="arithmatex">\(t\)</span> to the answer array and then return.</p>
86543+
<p>Otherwise, we can start from <span class="arithmatex">\(i\)</span> and enumerate the end position <span class="arithmatex">\(j\)</span> from small to large. If <span class="arithmatex">\(s[i..j]\)</span> is a palindrome, we add <span class="arithmatex">\(s[i..j]\)</span> to <span class="arithmatex">\(t\)</span>, then continue to recursively call <span class="arithmatex">\(dfs(j+1)\)</span>. When backtracking, we need to pop <span class="arithmatex">\(s[i..j]\)</span>.</p>
86544+
<p>The time complexity is <span class="arithmatex">\(O(n \times 2^n)\)</span>, and the space complexity is <span class="arithmatex">\(O(n^2)\)</span>. Here, <span class="arithmatex">\(n\)</span> is the length of the string.</p>
8654086545
<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>
8654186546
<div class="tabbed-content">
8654286547
<div class="tabbed-block">
@@ -86815,7 +86820,7 @@ <h3 id="solution-1">Solution 1</h3>
8681586820
<span class="normal">25</span>
8681686821
<span class="normal">26</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">partition</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">string</span><span class="p">[][]</span><span class="w"> </span><span class="p">{</span>
8681786822
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</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">length</span><span class="p">;</span>
86818-
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">f</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</span><span class="p">[][]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">).</span><span class="nx">map</span><span class="p">(()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="kc">true</span><span class="p">));</span>
86823+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">f</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</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="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="kt">n</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="kc">true</span><span class="p">));</span>
8681986824
<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="nx">n</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">&gt;=</span><span class="w"> </span><span class="mf">0</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>
8682086825
<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">j</span><span class="w"> </span><span class="o">=</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">j</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="o">++</span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
8682186826
<span class="w"> </span><span class="nx">f</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</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">i</span><span class="p">]</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">j</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">f</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="nx">j</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>

en/lc/132/index.html

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10365,9 +10365,9 @@
1036510365
<ul class="md-nav__list">
1036610366

1036710367
<li class="md-nav__item">
10368-
<a href="#solution-1" class="md-nav__link">
10368+
<a href="#solution-1-dynamic-programming" class="md-nav__link">
1036910369
<span class="md-ellipsis">
10370-
Solution 1
10370+
Solution 1: Dynamic Programming
1037110371
</span>
1037210372
</a>
1037310373

@@ -86546,7 +86546,15 @@ <h2 id="description">Description</h2>
8654686546
<h2 id="solutions">Solutions</h2>
8654786547
<!-- solution:start -->
8654886548

86549-
<h3 id="solution-1">Solution 1</h3>
86549+
<h3 id="solution-1-dynamic-programming">Solution 1: Dynamic Programming</h3>
86550+
<p>First, we preprocess the string <span class="arithmatex">\(s\)</span> to determine whether each substring <span class="arithmatex">\(s[i..j]\)</span> is a palindrome, and record this in a 2D array <span class="arithmatex">\(g[i][j]\)</span>, where <span class="arithmatex">\(g[i][j]\)</span> indicates whether the substring <span class="arithmatex">\(s[i..j]\)</span> is a palindrome.</p>
86551+
<p>Next, we define <span class="arithmatex">\(f[i]\)</span> to represent the minimum number of cuts needed for the substring <span class="arithmatex">\(s[0..i-1]\)</span>. Initially, <span class="arithmatex">\(f[i] = i\)</span>.</p>
86552+
<p>Next, we consider how to transition the state for <span class="arithmatex">\(f[i]\)</span>. We can enumerate the previous cut point <span class="arithmatex">\(j\)</span>. If the substring <span class="arithmatex">\(s[j..i]\)</span> is a palindrome, then <span class="arithmatex">\(f[i]\)</span> can be transitioned from <span class="arithmatex">\(f[j]\)</span>. If <span class="arithmatex">\(j = 0\)</span>, it means that <span class="arithmatex">\(s[0..i]\)</span> itself is a palindrome, and no cuts are needed, i.e., <span class="arithmatex">\(f[i] = 0\)</span>. Therefore, the state transition equation is as follows:</p>
86553+
<div class="arithmatex">\[
86554+
f[i] = \min_{0 \leq j \leq i} \begin{cases} f[j-1] + 1, &amp; \textit{if}\ g[j][i] = \textit{True} \\ 0, &amp; \textit{if}\ g[0][i] = \textit{True} \end{cases}
86555+
\]</div>
86556+
<p>The answer is <span class="arithmatex">\(f[n]\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the string <span class="arithmatex">\(s\)</span>.</p>
86557+
<p>The time complexity is <span class="arithmatex">\(O(n^2)\)</span>, and the space complexity is <span class="arithmatex">\(O(n^2)\)</span>. Here, <span class="arithmatex">\(n\)</span> is the length of the string <span class="arithmatex">\(s\)</span>.</p>
8655086558
<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>
8655186559
<div class="tabbed-content">
8655286560
<div class="tabbed-block">
@@ -86757,23 +86765,15 @@ <h3 id="solution-1">Solution 1</h3>
8675786765
<span class="normal">15</span>
8675886766
<span class="normal">16</span>
8675986767
<span class="normal">17</span>
86760-
<span class="normal">18</span>
86761-
<span class="normal">19</span>
86762-
<span class="normal">20</span>
86763-
<span class="normal">21</span>
86764-
<span class="normal">22</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">minCut</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>
86768+
<span class="normal">18</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">minCut</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>
8676586769
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</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">length</span><span class="p">;</span>
86766-
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">g</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</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="nx">n</span><span class="p">)</span>
86767-
<span class="w"> </span><span class="p">.</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span>
86768-
<span class="w"> </span><span class="p">.</span><span class="nx">map</span><span class="p">(()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="kc">true</span><span class="p">));</span>
86770+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">g</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</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="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="kt">n</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">n</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="kc">true</span><span class="p">));</span>
8676986771
<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="nx">n</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="nx">i</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>
8677086772
<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">j</span><span class="w"> </span><span class="o">=</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">j</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="o">++</span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
8677186773
<span class="w"> </span><span class="nx">g</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</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">i</span><span class="p">]</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">j</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">g</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="nx">j</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
8677286774
<span class="w"> </span><span class="p">}</span>
8677386775
<span class="w"> </span><span class="p">}</span>
86774-
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">f</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="nx">n</span><span class="p">)</span>
86775-
<span class="w"> </span><span class="p">.</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">)</span>
86776-
<span class="w"> </span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">i</span><span class="p">);</span>
86776+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">f</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="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="kt">n</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">i</span><span class="p">);</span>
8677786777
<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="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
8677886778
<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">j</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">j</span><span class="w"> </span><span class="o">&lt;=</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
8677986779
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">g</span><span class="p">[</span><span class="nx">j</span><span class="p">][</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>

en/search/search_index.json

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

0 commit comments

Comments
 (0)