Skip to content

Commit 7da6698

Browse files
committed
deploy: 58c2190
1 parent 29fefb5 commit 7da6698

File tree

8 files changed

+120
-85
lines changed

8 files changed

+120
-85
lines changed

en/lc/622/index.html

Lines changed: 38 additions & 32 deletions
Large diffs are not rendered by default.

en/lc/628/index.html

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20560,18 +20560,18 @@
2056020560
<ul class="md-nav__list">
2056120561

2056220562
<li class="md-nav__item">
20563-
<a href="#solution-1" class="md-nav__link">
20563+
<a href="#solution-1-sorting-case-analysis" class="md-nav__link">
2056420564
<span class="md-ellipsis">
20565-
Solution 1
20565+
Solution 1: Sorting + Case Analysis
2056620566
</span>
2056720567
</a>
2056820568

2056920569
</li>
2057020570

2057120571
<li class="md-nav__item">
20572-
<a href="#solution-2" class="md-nav__link">
20572+
<a href="#solution-2-single-pass" class="md-nav__link">
2057320573
<span class="md-ellipsis">
20574-
Solution 2
20574+
Solution 2: Single Pass
2057520575
</span>
2057620576
</a>
2057720577

@@ -81958,7 +81958,14 @@ <h2 id="description">Description</h2>
8195881958
<h2 id="solutions">Solutions</h2>
8195981959
<!-- solution:start -->
8196081960

81961-
<h3 id="solution-1">Solution 1</h3>
81961+
<h3 id="solution-1-sorting-case-analysis">Solution 1: Sorting + Case Analysis</h3>
81962+
<p>First, we sort the array $\textit{nums}$, and then discuss two cases:</p>
81963+
<ul>
81964+
<li>If $\textit{nums}$ contains all non-negative or all non-positive numbers, the answer is the product of the last three numbers, i.e., $\textit{nums}[n-1] \times \textit{nums}[n-2] \times \textit{nums}[n-3]$;</li>
81965+
<li>If $\textit{nums}$ contains both positive and negative numbers, the answer could be the product of the two smallest negative numbers and the largest positive number, i.e., $\textit{nums}[n-1] \times \textit{nums}[0] \times \textit{nums}[1]$, or the product of the last three numbers, i.e., $\textit{nums}[n-1] \times \textit{nums}[n-2] \times \textit{nums}[n-3]$.</li>
81966+
</ul>
81967+
<p>Finally, return the maximum of the two cases.</p>
81968+
<p>The time complexity is $O(n \times \log n)$, and the space complexity is $O(\log n)$. Here, $n$ is the length of the array $\textit{nums}$.</p>
8196281969
<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>
8196381970
<div class="tabbed-content">
8196481971
<div class="tabbed-block">
@@ -82061,7 +82068,10 @@ <h3 id="solution-1">Solution 1</h3>
8206182068

8206282069
<!-- solution:start -->
8206382070

82064-
<h3 id="solution-2">Solution 2</h3>
82071+
<h3 id="solution-2-single-pass">Solution 2: Single Pass</h3>
82072+
<p>We can avoid sorting the array by maintaining five variables: $\textit{mi1}$ and $\textit{mi2}$ represent the two smallest numbers in the array, while $\textit{mx1}$, $\textit{mx2}$, and $\textit{mx3}$ represent the three largest numbers in the array.</p>
82073+
<p>Finally, return $\max(\textit{mi1} \times \textit{mi2} \times \textit{mx1}, \textit{mx1} \times \textit{mx2} \times \textit{mx3})$.</p>
82074+
<p>The time complexity is $O(n)$, where $n$ is the length of the array. The space complexity is $O(1)$.</p>
8206582075
<div class="tabbed-set tabbed-alternate" data-tabs="2:5"><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" /><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></div>
8206682076
<div class="tabbed-content">
8206782077
<div class="tabbed-block">

en/lc/629/index.html

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20581,9 +20581,9 @@
2058120581
<ul class="md-nav__list">
2058220582

2058320583
<li class="md-nav__item">
20584-
<a href="#solution-1" class="md-nav__link">
20584+
<a href="#solution-1-dynamic-programming-prefix-sum" class="md-nav__link">
2058520585
<span class="md-ellipsis">
20586-
Solution 1
20586+
Solution 1: Dynamic Programming + Prefix Sum
2058720587
</span>
2058820588
</a>
2058920589

@@ -81943,7 +81943,20 @@ <h2 id="description">Description</h2>
8194381943
<h2 id="solutions">Solutions</h2>
8194481944
<!-- solution:start -->
8194581945

81946-
<h3 id="solution-1">Solution 1</h3>
81946+
<h3 id="solution-1-dynamic-programming-prefix-sum">Solution 1: Dynamic Programming + Prefix Sum</h3>
81947+
<p>We define $f[i][j]$ as the number of arrays of length $i$ with $j$ inverse pairs. Initially, $f[0][0] = 1$, and the rest $f[i][j] = 0$.</p>
81948+
<p>Next, we consider how to obtain $f[i][j]$.</p>
81949+
<p>Assume the first $i-1$ numbers are already determined, and now we need to insert the number $i$. We discuss the cases of inserting $i$ into each position:</p>
81950+
<ul>
81951+
<li>If $i$ is inserted into the 1st position, the number of inverse pairs increases by $i-1$, so $f[i][j] += f[i-1][j-(i-1)]$.</li>
81952+
<li>If $i$ is inserted into the 2nd position, the number of inverse pairs increases by $i-2$, so $f[i][j] += f[i-1][j-(i-2)]$.</li>
81953+
<li>...</li>
81954+
<li>If $i$ is inserted into the $(i-1)$th position, the number of inverse pairs increases by 1, so $f[i][j] += f[i-1][j-1]$.</li>
81955+
<li>If $i$ is inserted into the $i$th position, the number of inverse pairs does not change, so $f[i][j] += f[i-1][j]$.</li>
81956+
</ul>
81957+
<p>Therefore, $f[i][j] = \sum_{k=1}^{i} f[i-1][j-(i-k)]$.</p>
81958+
<p>We notice that the calculation of $f[i][j]$ actually involves prefix sums, so we can use prefix sums to optimize the calculation process. Moreover, since $f[i][j]$ only depends on $f[i-1][j]$, we can use a one-dimensional array to optimize the space complexity.</p>
81959+
<p>The time complexity is $O(n \times k)$, and the space complexity is $O(k)$. Here, $n$ and $k$ are the array length and the number of inverse pairs, respectively.</p>
8194781960
<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>
8194881961
<div class="tabbed-content">
8194981962
<div class="tabbed-block">
@@ -82109,9 +82122,9 @@ <h3 id="solution-1">Solution 1</h3>
8210982122
<span class="normal">14</span>
8211082123
<span class="normal">15</span>
8211182124
<span class="normal">16</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">kInversePairs</span><span class="p">(</span><span class="nx">n</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">k</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>
82112-
<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="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">k</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">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
82125+
<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">k</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">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">);</span>
8211382126
<span class="w"> </span><span class="nx">f</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
82114-
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">s</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="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">k</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">1</span><span class="p">);</span>
82127+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">s</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">k</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">1</span><span class="p">);</span>
8211582128
<span class="w"> </span><span class="nx">s</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
8211682129
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">mod</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1e9</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">7</span><span class="p">;</span>
8211782130
<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>

en/search/search_index.json

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

0 commit comments

Comments
 (0)