Skip to content

Commit c45771f

Browse files
committed
deploy: 6a9164e
1 parent f077035 commit c45771f

File tree

6 files changed

+103
-47
lines changed

6 files changed

+103
-47
lines changed

en/lc/1454/index.html

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -37536,9 +37536,9 @@
3753637536
<ul class="md-nav__list">
3753737537

3753837538
<li class="md-nav__item">
37539-
<a href="#solution-1" class="md-nav__link">
37539+
<a href="#solution-1-using-window-functions" class="md-nav__link">
3754037540
<span class="md-ellipsis">
37541-
Solution 1
37541+
Solution 1: Using Window Functions
3754237542
</span>
3754337543
</a>
3754437544

@@ -77696,7 +77696,7 @@ <h2 id="description">Description</h2>
7769677696
<p><strong class="example">Example 1:</strong></p>
7769777697

7769877698
<pre>
77699-
<strong>Input:</strong>
77699+
<strong>Input:</strong>
7770077700
Accounts table:
7770177701
+----+----------+
7770277702
| id | name |
@@ -77718,13 +77718,13 @@ <h2 id="description">Description</h2>
7771877718
| 1 | 2020-06-07 |
7771977719
| 7 | 2020-06-10 |
7772077720
+----+------------+
77721-
<strong>Output:</strong>
77721+
<strong>Output:</strong>
7772277722
+----+----------+
7772377723
| id | name |
7772477724
+----+----------+
7772577725
| 7 | Jonathan |
7772677726
+----+----------+
77727-
<strong>Explanation:</strong>
77727+
<strong>Explanation:</strong>
7772877728
User Winston with id = 1 logged in 2 times only in 2 different days, so, Winston is not an active user.
7772977729
User Jonathan with id = 7 logged in 7 times in 6 different days, five of them were consecutive days, so, Jonathan is an active user.
7773077730
</pre>
@@ -77737,7 +77737,10 @@ <h2 id="description">Description</h2>
7773777737
<h2 id="solutions">Solutions</h2>
7773877738
<!-- solution:start -->
7773977739

77740-
<h3 id="solution-1">Solution 1</h3>
77740+
<h3 id="solution-1-using-window-functions">Solution 1: Using Window Functions</h3>
77741+
<p>First, we join the <code>Logins</code> table and the <code>Accounts</code> table, and remove duplicates to get the temporary table <code>T</code>.</p>
77742+
<p>Then, we use the window function <code>ROW_NUMBER()</code> to calculate the base login date <code>g</code> for each user <code>id</code>. If a user logs in for 5 consecutive days, their <code>g</code> values are the same.</p>
77743+
<p>Finally, we group by <code>id</code> and <code>g</code> to count the number of logins for each user. If the number of logins is greater than or equal to 5, then the user is considered active.</p>
7774177744
<div class="tabbed-set tabbed-alternate" data-tabs="1:1"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">MySQL</label></div>
7774277745
<div class="tabbed-content">
7774377746
<div class="tabbed-block">
@@ -77753,19 +77756,43 @@ <h3 id="solution-1">Solution 1</h3>
7775377756
<span class="normal">10</span>
7775477757
<span class="normal">11</span>
7775577758
<span class="normal">12</span>
77756-
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="o">#</span><span class="w"> </span><span class="k">Write</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">MySQL</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="n">below</span>
77757-
<span class="k">WITH</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="k">AS</span>
77758-
<span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="p">,</span>
77759-
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="n">over</span><span class="p">(</span><span class="n">partition</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">id</span>
77760-
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">login_date</span><span class="w"> </span><span class="n">range</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="k">day</span><span class="w"> </span><span class="n">preceding</span><span class="p">)</span><span class="o">/</span><span class="n">id</span><span class="w"> </span><span class="n">cnt</span>
77761-
<span class="w"> </span><span class="k">FROM</span>
77762-
<span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="o">*</span>
77763-
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Accounts</span>
77764-
<span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Logins</span><span class="w"> </span><span class="k">using</span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="n">tt</span><span class="w"> </span><span class="p">)</span>
77765-
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span>
77766-
<span class="w"> </span><span class="n">name</span>
77767-
<span class="k">FROM</span><span class="w"> </span><span class="n">t</span>
77768-
<span class="k">WHERE</span><span class="w"> </span><span class="n">cnt</span><span class="o">=</span><span class="mi">5</span><span class="p">;</span>
77759+
<span class="normal">13</span>
77760+
<span class="normal">14</span>
77761+
<span class="normal">15</span>
77762+
<span class="normal">16</span>
77763+
<span class="normal">17</span>
77764+
<span class="normal">18</span>
77765+
<span class="normal">19</span>
77766+
<span class="normal">20</span>
77767+
<span class="normal">21</span>
77768+
<span class="normal">22</span>
77769+
<span class="normal">23</span>
77770+
<span class="normal">24</span>
77771+
<span class="normal">25</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="o">#</span><span class="w"> </span><span class="k">Write</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">MySQL</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="n">below</span>
77772+
<span class="k">WITH</span>
77773+
<span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
77774+
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="o">*</span>
77775+
<span class="w"> </span><span class="k">FROM</span>
77776+
<span class="w"> </span><span class="n">Logins</span>
77777+
<span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Accounts</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="p">)</span>
77778+
<span class="w"> </span><span class="p">),</span>
77779+
<span class="w"> </span><span class="n">P</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
77780+
<span class="w"> </span><span class="k">SELECT</span>
77781+
<span class="w"> </span><span class="o">*</span><span class="p">,</span>
77782+
<span class="w"> </span><span class="n">DATE_SUB</span><span class="p">(</span>
77783+
<span class="w"> </span><span class="n">login_date</span><span class="p">,</span>
77784+
<span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="n">ROW_NUMBER</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span>
77785+
<span class="w"> </span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">id</span>
77786+
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">login_date</span>
77787+
<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">DAY</span>
77788+
<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">g</span>
77789+
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">T</span>
77790+
<span class="w"> </span><span class="p">)</span>
77791+
<span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">name</span>
77792+
<span class="k">FROM</span><span class="w"> </span><span class="n">P</span>
77793+
<span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="k">g</span>
77794+
<span class="k">HAVING</span><span class="w"> </span><span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">5</span>
77795+
<span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
7776977796
</code></pre></div></td></tr></table></div>
7777077797
</div>
7777177798
</div>

en/lc/1455/index.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37557,9 +37557,9 @@
3755737557
<ul class="md-nav__list">
3755837558

3755937559
<li class="md-nav__item">
37560-
<a href="#solution-1" class="md-nav__link">
37560+
<a href="#solution-1-string-splitting" class="md-nav__link">
3756137561
<span class="md-ellipsis">
37562-
Solution 1
37562+
Solution 1: String Splitting
3756337563
</span>
3756437564
</a>
3756537565

@@ -77712,7 +77712,9 @@ <h2 id="description">Description</h2>
7771277712
<h2 id="solutions">Solutions</h2>
7771377713
<!-- solution:start -->
7771477714

77715-
<h3 id="solution-1">Solution 1</h3>
77715+
<h3 id="solution-1-string-splitting">Solution 1: String Splitting</h3>
77716+
<p>We split $\textit{sentence}$ by spaces into $\textit{words}$, then iterate through $\textit{words}$ to check if $\textit{words}[i]$ is a prefix of $\textit{searchWord}$. If it is, we return $i+1$. If the iteration completes and no words satisfy the condition, we return $-1$.</p>
77717+
<p>The time complexity is $O(m \times n)$, and the space complexity is $O(m)$. Here, $m$ and $n$ are the lengths of $\textit{sentence}$ and $\textit{searchWord}$, respectively.</p>
7771677718
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><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" /><input id="__tabbed_1_7" 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><label for="__tabbed_1_7">PHP</label></div>
7771777719
<div class="tabbed-content">
7771877720
<div class="tabbed-block">
@@ -77868,9 +77870,9 @@ <h3 id="solution-1">Solution 1</h3>
7786877870
<span class="x"> * @return Integer</span>
7786977871
<span class="x"> */</span>
7787077872
<span class="x"> function isPrefixOfWord($sentence, $searchWord) {</span>
77871-
<span class="x"> $arr = explode(&#39; &#39;, $sentence);</span>
77872-
<span class="x"> for ($i = 0; $i &lt; count($arr); $i++) {</span>
77873-
<span class="x"> if (strpos($arr[$i], $searchWord) === 0) {</span>
77873+
<span class="x"> $words = explode(&#39; &#39;, $sentence);</span>
77874+
<span class="x"> for ($i = 0; $i &lt; count($words); ++$i) {</span>
77875+
<span class="x"> if (strpos($words[$i], $searchWord) === 0) {</span>
7787477876
<span class="x"> return $i + 1;</span>
7787577877
<span class="x"> }</span>
7787677878
<span class="x"> }</span>

en/search/search_index.json

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

lc/1454/index.html

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37578,7 +37578,7 @@
3757837578
<li class="md-nav__item">
3757937579
<a href="#_3" class="md-nav__link">
3758037580
<span class="md-ellipsis">
37581-
方法一
37581+
方法一: 使用窗口函数
3758237582
</span>
3758337583
</a>
3758437584

@@ -82341,7 +82341,10 @@ <h2 id="_1">题目描述</h2>
8234182341
<h2 id="_2">解法</h2>
8234282342
<!-- solution:start -->
8234382343

82344-
<h3 id="_3">方法一</h3>
82344+
<h3 id="_3">方法一: 使用窗口函数</h3>
82345+
<p>我们先将 <code>Logins</code> 表和 <code>Accounts</code> 表连接起来,并且去重,得到临时表 <code>T</code>。</p>
82346+
<p>然后我们使用窗口函数 <code>ROW_NUMBER()</code>,计算出每个用户 <code>id</code> 的登录日期的基准日期 <code>g</code>,如果用户连续登录 5 天,那么他们的 <code>g</code> 值是相同的。</p>
82347+
<p>最后,我们按照 <code>id</code> 和 <code>g</code> 进行分组,统计每个用户的登录次数,如果登录次数大于等于 5,那么这个用户就是活跃用户。</p>
8234582348
<div class="tabbed-set tabbed-alternate" data-tabs="1:1"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">MySQL</label></div>
8234682349
<div class="tabbed-content">
8234782350
<div class="tabbed-block">
@@ -82357,19 +82360,43 @@ <h3 id="_3">方法一</h3>
8235782360
<span class="normal">10</span>
8235882361
<span class="normal">11</span>
8235982362
<span class="normal">12</span>
82360-
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="o">#</span><span class="w"> </span><span class="k">Write</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">MySQL</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="n">below</span>
82361-
<span class="k">WITH</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="k">AS</span>
82362-
<span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="p">,</span>
82363-
<span class="w"> </span><span class="k">SUM</span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="n">over</span><span class="p">(</span><span class="n">partition</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">id</span>
82364-
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">login_date</span><span class="w"> </span><span class="n">range</span><span class="w"> </span><span class="nb">interval</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="k">day</span><span class="w"> </span><span class="n">preceding</span><span class="p">)</span><span class="o">/</span><span class="n">id</span><span class="w"> </span><span class="n">cnt</span>
82365-
<span class="w"> </span><span class="k">FROM</span>
82366-
<span class="w"> </span><span class="p">(</span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="o">*</span>
82367-
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">Accounts</span>
82368-
<span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Logins</span><span class="w"> </span><span class="k">using</span><span class="p">(</span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="n">tt</span><span class="w"> </span><span class="p">)</span>
82369-
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span>
82370-
<span class="w"> </span><span class="n">name</span>
82371-
<span class="k">FROM</span><span class="w"> </span><span class="n">t</span>
82372-
<span class="k">WHERE</span><span class="w"> </span><span class="n">cnt</span><span class="o">=</span><span class="mi">5</span><span class="p">;</span>
82363+
<span class="normal">13</span>
82364+
<span class="normal">14</span>
82365+
<span class="normal">15</span>
82366+
<span class="normal">16</span>
82367+
<span class="normal">17</span>
82368+
<span class="normal">18</span>
82369+
<span class="normal">19</span>
82370+
<span class="normal">20</span>
82371+
<span class="normal">21</span>
82372+
<span class="normal">22</span>
82373+
<span class="normal">23</span>
82374+
<span class="normal">24</span>
82375+
<span class="normal">25</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="o">#</span><span class="w"> </span><span class="k">Write</span><span class="w"> </span><span class="n">your</span><span class="w"> </span><span class="n">MySQL</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">statement</span><span class="w"> </span><span class="n">below</span>
82376+
<span class="k">WITH</span>
82377+
<span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
82378+
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="o">*</span>
82379+
<span class="w"> </span><span class="k">FROM</span>
82380+
<span class="w"> </span><span class="n">Logins</span>
82381+
<span class="w"> </span><span class="k">JOIN</span><span class="w"> </span><span class="n">Accounts</span><span class="w"> </span><span class="k">USING</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="p">)</span>
82382+
<span class="w"> </span><span class="p">),</span>
82383+
<span class="w"> </span><span class="n">P</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="p">(</span>
82384+
<span class="w"> </span><span class="k">SELECT</span>
82385+
<span class="w"> </span><span class="o">*</span><span class="p">,</span>
82386+
<span class="w"> </span><span class="n">DATE_SUB</span><span class="p">(</span>
82387+
<span class="w"> </span><span class="n">login_date</span><span class="p">,</span>
82388+
<span class="w"> </span><span class="nb">INTERVAL</span><span class="w"> </span><span class="n">ROW_NUMBER</span><span class="p">()</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span>
82389+
<span class="w"> </span><span class="n">PARTITION</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">id</span>
82390+
<span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">login_date</span>
82391+
<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">DAY</span>
82392+
<span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">g</span>
82393+
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">T</span>
82394+
<span class="w"> </span><span class="p">)</span>
82395+
<span class="k">SELECT</span><span class="w"> </span><span class="k">DISTINCT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">name</span>
82396+
<span class="k">FROM</span><span class="w"> </span><span class="n">P</span>
82397+
<span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="k">g</span>
82398+
<span class="k">HAVING</span><span class="w"> </span><span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">5</span>
82399+
<span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
8237382400
</code></pre></div></td></tr></table></div>
8237482401
</div>
8237582402
</div>

0 commit comments

Comments
 (0)