Skip to content

Commit 8455e0f

Browse files
committed
deploy: c954041
1 parent 8121d31 commit 8455e0f

File tree

7 files changed

+377
-43
lines changed

7 files changed

+377
-43
lines changed

lcof/12/index.html

Lines changed: 119 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80435,7 +80435,7 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
8043580435
<li>否则,我们将当前位置的字符标记为已访问(防止重复搜索),然后分别向当前位置的上、下、左、右四个方向继续匹配字符 <code>word[k + 1]</code>,只要有一条路径能够匹配到字符串 <code>word</code> 的路径,就说明能够找到字符串 <code>word</code> 的路径,返回 <code>true</code>。在回溯时,我们要将当前位置的字符还原为未访问过的状态。</li>
8043680436
</ul>
8043780437
<p>时间复杂度 $O(m \times n \times 3^k)$,空间复杂度 $O(m \times n)$。其中 $m$ 和 $n$ 分别为矩阵的行数和列数,而 $k$ 为字符串 <code>word</code> 的长度。我们需要枚举矩阵中的每个位置,然后对于每个位置,我们最多需要搜索三个方向。</p>
80438-
<div class="tabbed-set tabbed-alternate" data-tabs="1:8"><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" /><input id="__tabbed_1_8" 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">JavaScript</label><label for="__tabbed_1_8">C#</label></div>
80438+
<div class="tabbed-set tabbed-alternate" data-tabs="1:9"><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" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" 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">JavaScript</label><label for="__tabbed_1_8">C#</label><label for="__tabbed_1_9">Swift</label></div>
8043980439
<div class="tabbed-content">
8044080440
<div class="tabbed-block">
8044180441
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -80957,6 +80957,118 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
8095780957
<span class="p">}</span>
8095880958
</code></pre></div></td></tr></table></div>
8095980959
</div>
80960+
<div class="tabbed-block">
80961+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
80962+
<span class="normal"> 2</span>
80963+
<span class="normal"> 3</span>
80964+
<span class="normal"> 4</span>
80965+
<span class="normal"> 5</span>
80966+
<span class="normal"> 6</span>
80967+
<span class="normal"> 7</span>
80968+
<span class="normal"> 8</span>
80969+
<span class="normal"> 9</span>
80970+
<span class="normal">10</span>
80971+
<span class="normal">11</span>
80972+
<span class="normal">12</span>
80973+
<span class="normal">13</span>
80974+
<span class="normal">14</span>
80975+
<span class="normal">15</span>
80976+
<span class="normal">16</span>
80977+
<span class="normal">17</span>
80978+
<span class="normal">18</span>
80979+
<span class="normal">19</span>
80980+
<span class="normal">20</span>
80981+
<span class="normal">21</span>
80982+
<span class="normal">22</span>
80983+
<span class="normal">23</span>
80984+
<span class="normal">24</span>
80985+
<span class="normal">25</span>
80986+
<span class="normal">26</span>
80987+
<span class="normal">27</span>
80988+
<span class="normal">28</span>
80989+
<span class="normal">29</span>
80990+
<span class="normal">30</span>
80991+
<span class="normal">31</span>
80992+
<span class="normal">32</span>
80993+
<span class="normal">33</span>
80994+
<span class="normal">34</span>
80995+
<span class="normal">35</span>
80996+
<span class="normal">36</span>
80997+
<span class="normal">37</span>
80998+
<span class="normal">38</span>
80999+
<span class="normal">39</span>
81000+
<span class="normal">40</span>
81001+
<span class="normal">41</span>
81002+
<span class="normal">42</span>
81003+
<span class="normal">43</span>
81004+
<span class="normal">44</span>
81005+
<span class="normal">45</span>
81006+
<span class="normal">46</span>
81007+
<span class="normal">47</span>
81008+
<span class="normal">48</span>
81009+
<span class="normal">49</span>
81010+
<span class="normal">50</span>
81011+
<span class="normal">51</span>
81012+
<span class="normal">52</span>
81013+
<span class="normal">53</span>
81014+
<span class="normal">54</span>
81015+
<span class="normal">55</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Solution</span> <span class="p">{</span>
81016+
<span class="kd">private</span> <span class="kd">var</span> <span class="nv">board</span><span class="p">:</span> <span class="p">[[</span><span class="nb">Character</span><span class="p">]]</span>
81017+
<span class="kd">private</span> <span class="kd">var</span> <span class="nv">word</span><span class="p">:</span> <span class="nb">String</span>
81018+
<span class="kd">private</span> <span class="kd">var</span> <span class="nv">m</span><span class="p">:</span> <span class="nb">Int</span>
81019+
<span class="kd">private</span> <span class="kd">var</span> <span class="nv">n</span><span class="p">:</span> <span class="nb">Int</span>
81020+
81021+
<span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
81022+
<span class="kc">self</span><span class="p">.</span><span class="n">board</span> <span class="p">=</span> <span class="p">[]</span>
81023+
<span class="kc">self</span><span class="p">.</span><span class="n">word</span> <span class="p">=</span> <span class="s">&quot;&quot;</span>
81024+
<span class="kc">self</span><span class="p">.</span><span class="n">m</span> <span class="p">=</span> <span class="mi">0</span>
81025+
<span class="kc">self</span><span class="p">.</span><span class="n">n</span> <span class="p">=</span> <span class="mi">0</span>
81026+
<span class="p">}</span>
81027+
81028+
<span class="kd">func</span> <span class="nf">exist</span><span class="p">(</span><span class="kc">_</span> <span class="n">board</span><span class="p">:</span> <span class="p">[[</span><span class="nb">Character</span><span class="p">]],</span> <span class="kc">_</span> <span class="n">word</span><span class="p">:</span> <span class="nb">String</span><span class="p">)</span> <span class="p">-&gt;</span> <span class="nb">Bool</span> <span class="p">{</span>
81029+
<span class="kc">self</span><span class="p">.</span><span class="n">board</span> <span class="p">=</span> <span class="n">board</span>
81030+
<span class="kc">self</span><span class="p">.</span><span class="n">word</span> <span class="p">=</span> <span class="n">word</span>
81031+
<span class="n">m</span> <span class="p">=</span> <span class="n">board</span><span class="p">.</span><span class="bp">count</span>
81032+
<span class="n">n</span> <span class="p">=</span> <span class="n">board</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="bp">count</span>
81033+
81034+
<span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="mf">0.</span><span class="p">.&lt;</span><span class="n">m</span> <span class="p">{</span>
81035+
<span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="mf">0.</span><span class="p">.&lt;</span><span class="n">n</span> <span class="p">{</span>
81036+
<span class="k">if</span> <span class="n">dfs</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
81037+
<span class="k">return</span> <span class="kc">true</span>
81038+
<span class="p">}</span>
81039+
<span class="p">}</span>
81040+
<span class="p">}</span>
81041+
<span class="k">return</span> <span class="kc">false</span>
81042+
<span class="p">}</span>
81043+
81044+
<span class="kd">private</span> <span class="kd">func</span> <span class="nf">dfs</span><span class="p">(</span><span class="kc">_</span> <span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kc">_</span> <span class="n">j</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kc">_</span> <span class="n">k</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-&gt;</span> <span class="nb">Bool</span> <span class="p">{</span>
81045+
<span class="k">if</span> <span class="n">k</span> <span class="p">==</span> <span class="n">word</span><span class="p">.</span><span class="bp">count</span> <span class="p">{</span>
81046+
<span class="k">return</span> <span class="kc">true</span>
81047+
<span class="p">}</span>
81048+
<span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">i</span> <span class="o">&gt;=</span> <span class="n">m</span> <span class="o">||</span> <span class="n">j</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">j</span> <span class="o">&gt;=</span> <span class="n">n</span> <span class="o">||</span> <span class="n">board</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">!=</span> <span class="n">word</span><span class="p">[</span><span class="n">word</span><span class="p">.</span><span class="n">index</span><span class="p">(</span><span class="n">word</span><span class="p">.</span><span class="n">startIndex</span><span class="p">,</span> <span class="n">offsetBy</span><span class="p">:</span> <span class="n">k</span><span class="p">)]</span> <span class="p">{</span>
81049+
<span class="k">return</span> <span class="kc">false</span>
81050+
<span class="p">}</span>
81051+
81052+
<span class="kd">let</span> <span class="nv">temp</span> <span class="p">=</span> <span class="n">board</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span>
81053+
<span class="n">board</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="s">&quot; &quot;</span>
81054+
<span class="kd">let</span> <span class="nv">dirs</span> <span class="p">=</span> <span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">]</span>
81055+
<span class="kd">var</span> <span class="nv">ans</span> <span class="p">=</span> <span class="kc">false</span>
81056+
81057+
<span class="k">for</span> <span class="n">l</span> <span class="k">in</span> <span class="mf">0.</span><span class="p">.&lt;</span><span class="mi">4</span> <span class="p">{</span>
81058+
<span class="kd">let</span> <span class="nv">ni</span> <span class="p">=</span> <span class="n">i</span> <span class="o">+</span> <span class="n">dirs</span><span class="p">[</span><span class="n">l</span><span class="p">]</span>
81059+
<span class="kd">let</span> <span class="nv">nj</span> <span class="p">=</span> <span class="n">j</span> <span class="o">+</span> <span class="n">dirs</span><span class="p">[</span><span class="n">l</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
81060+
<span class="k">if</span> <span class="n">dfs</span><span class="p">(</span><span class="n">ni</span><span class="p">,</span> <span class="n">nj</span><span class="p">,</span> <span class="n">k</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
81061+
<span class="n">ans</span> <span class="p">=</span> <span class="kc">true</span>
81062+
<span class="k">break</span>
81063+
<span class="p">}</span>
81064+
<span class="p">}</span>
81065+
81066+
<span class="n">board</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="n">temp</span>
81067+
<span class="k">return</span> <span class="n">ans</span>
81068+
<span class="p">}</span>
81069+
<span class="p">}</span>
81070+
</code></pre></div></td></tr></table></div>
81071+
</div>
8096081072
</div>
8096181073
</div>
8096281074
<!-- solution:end -->
@@ -80990,6 +81102,11 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
8099081102

8099181103
<nav>
8099281104

81105+
<a href="https://github.com/klever34" class="md-author" title="@klever34">
81106+
81107+
<img src="https://avatars.githubusercontent.com/u/12745225?v=4&size=72" alt="klever34">
81108+
</a>
81109+
8099381110
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
8099481111

8099581112
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
@@ -81005,16 +81122,11 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
8100581122
<img src="https://avatars.githubusercontent.com/u/85606371?v=4&size=72" alt="xiongbinzou">
8100681123
</a>
8100781124

81008-
<a href="https://github.com/YangFong" class="md-author" title="@YangFong">
81009-
81010-
<img src="https://avatars.githubusercontent.com/u/70502828?v=4&size=72" alt="YangFong">
81011-
</a>
81012-
8101381125

8101481126

8101581127

8101681128
<a href="https://github.com/doocs/leetcode/blob/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9812.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84/README.md" class="md-author md-author--more">
81017-
+3
81129+
+4
8101881130
</a>
8101981131

8102081132

0 commit comments

Comments
 (0)