Skip to content

Commit b96b03b

Browse files
committed
deploy: f82785c
1 parent 9137ea1 commit b96b03b

File tree

4 files changed

+91
-8
lines changed

4 files changed

+91
-8
lines changed

en/lc/801/index.html

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25071,9 +25071,9 @@
2507125071
<ul class="md-nav__list">
2507225072

2507325073
<li class="md-nav__item">
25074-
<a href="#solution-1" class="md-nav__link">
25074+
<a href="#solution-1-dynamic-programming" class="md-nav__link">
2507525075
<span class="md-ellipsis">
25076-
Solution 1
25076+
Solution 1: Dynamic Programming
2507725077
</span>
2507825078
</a>
2507925079

@@ -86378,7 +86378,7 @@ <h2 id="description">Description</h2>
8637886378
<pre>
8637986379
<strong>Input:</strong> nums1 = [1,3,5,4], nums2 = [1,2,3,7]
8638086380
<strong>Output:</strong> 1
86381-
<strong>Explanation:</strong>
86381+
<strong>Explanation:</strong>
8638286382
Swap nums1[3] and nums2[3]. Then the sequences are:
8638386383
nums1 = [1, 3, 5, 7] and nums2 = [1, 2, 3, 4]
8638486384
which are both strictly increasing.
@@ -86405,8 +86405,15 @@ <h2 id="description">Description</h2>
8640586405
<h2 id="solutions">Solutions</h2>
8640686406
<!-- solution:start -->
8640786407

86408-
<h3 id="solution-1">Solution 1</h3>
86409-
<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>
86408+
<h3 id="solution-1-dynamic-programming">Solution 1: Dynamic Programming</h3>
86409+
<p>Define <span class="arithmatex">\(a\)</span> and <span class="arithmatex">\(b\)</span> to represent the minimum number of swaps needed to make the element sequences strictly increasing up to index <span class="arithmatex">\([0..i]\)</span>, with the <span class="arithmatex">\(i\)</span>-th element not swapped and swapped, respectively. The index starts from <span class="arithmatex">\(0\)</span>.</p>
86410+
<p>When <span class="arithmatex">\(i=0\)</span>, we have <span class="arithmatex">\(a = 0\)</span> and <span class="arithmatex">\(b = 1\)</span>.</p>
86411+
<p>When <span class="arithmatex">\(i \gt 0\)</span>, we first save the previous values of <span class="arithmatex">\(a\)</span> and <span class="arithmatex">\(b\)</span> in <span class="arithmatex">\(x\)</span> and <span class="arithmatex">\(y\)</span>, and then discuss the following cases:</p>
86412+
<p>If <span class="arithmatex">\(nums1[i - 1] \ge nums1[i]\)</span> or <span class="arithmatex">\(nums2[i - 1] \ge nums2[i]\)</span>, to make both sequences strictly increasing, the relative positions of the elements at indices <span class="arithmatex">\(i-1\)</span> and <span class="arithmatex">\(i\)</span> must change. That is, if the previous position was swapped, then the current position should not be swapped, so <span class="arithmatex">\(a = y\)</span>; if the previous position was not swapped, then the current position must be swapped, so <span class="arithmatex">\(b = x + 1\)</span>.</p>
86413+
<p>Otherwise, the relative positions of the elements at indices <span class="arithmatex">\(i-1\)</span> and <span class="arithmatex">\(i\)</span> do not need to change, so <span class="arithmatex">\(b = y + 1\)</span>. Additionally, if <span class="arithmatex">\(nums1[i - 1] \lt nums2[i]\)</span> and <span class="arithmatex">\(nums2[i - 1] \lt nums1[i]\)</span>, the relative positions of the elements at indices <span class="arithmatex">\(i-1\)</span> and <span class="arithmatex">\(i\)</span> can change, so <span class="arithmatex">\(a\)</span> and <span class="arithmatex">\(b\)</span> can take the smaller values, thus <span class="arithmatex">\(a = \min(a, y)\)</span> and <span class="arithmatex">\(b = \min(b, x + 1)\)</span>.</p>
86414+
<p>Finally, return the smaller value between <span class="arithmatex">\(a\)</span> and <span class="arithmatex">\(b\)</span>.</p>
86415+
<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, and the space complexity is <span class="arithmatex">\(O(1)\)</span>.</p>
86416+
<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>
8641086417
<div class="tabbed-content">
8641186418
<div class="tabbed-block">
8641286419
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -86548,6 +86555,44 @@ <h3 id="solution-1">Solution 1</h3>
8654886555
<span class="p">}</span>
8654986556
</code></pre></div></td></tr></table></div>
8655086557
</div>
86558+
<div class="tabbed-block">
86559+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
86560+
<span class="normal"> 2</span>
86561+
<span class="normal"> 3</span>
86562+
<span class="normal"> 4</span>
86563+
<span class="normal"> 5</span>
86564+
<span class="normal"> 6</span>
86565+
<span class="normal"> 7</span>
86566+
<span class="normal"> 8</span>
86567+
<span class="normal"> 9</span>
86568+
<span class="normal">10</span>
86569+
<span class="normal">11</span>
86570+
<span class="normal">12</span>
86571+
<span class="normal">13</span>
86572+
<span class="normal">14</span>
86573+
<span class="normal">15</span>
86574+
<span class="normal">16</span>
86575+
<span class="normal">17</span>
86576+
<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">minSwap</span><span class="p">(</span><span class="nx">nums1</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[],</span><span class="w"> </span><span class="nx">nums2</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>
86577+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">[</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</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>
86578+
<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">nums1</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>
86579+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">a</span><span class="p">,</span>
86580+
<span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">b</span><span class="p">;</span>
86581+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">nums1</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">&gt;=</span><span class="w"> </span><span class="nx">nums1</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">nums2</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">&gt;=</span><span class="w"> </span><span class="nx">nums2</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
86582+
<span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">;</span>
86583+
<span class="w"> </span><span class="nx">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
86584+
<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>
86585+
<span class="w"> </span><span class="nx">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
86586+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">nums1</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">&lt;</span><span class="w"> </span><span class="nx">nums2</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">nums2</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">&lt;</span><span class="w"> </span><span class="nx">nums1</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
86587+
<span class="w"> </span><span class="nx">a</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">min</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">);</span>
86588+
<span class="w"> </span><span class="nx">b</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">min</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
86589+
<span class="w"> </span><span class="p">}</span>
86590+
<span class="w"> </span><span class="p">}</span>
86591+
<span class="w"> </span><span class="p">}</span>
86592+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="p">);</span>
86593+
<span class="p">}</span>
86594+
</code></pre></div></td></tr></table></div>
86595+
</div>
8655186596
</div>
8655286597
</div>
8655386598
<!-- solution:end -->

en/search/search_index.json

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

0 commit comments

Comments
 (0)