@@ -80435,7 +80435,7 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
80435
80435
<li>否则,我们将当前位置的字符标记为已访问(防止重复搜索),然后分别向当前位置的上、下、左、右四个方向继续匹配字符 <code>word[k + 1]</code>,只要有一条路径能够匹配到字符串 <code>word</code> 的路径,就说明能够找到字符串 <code>word</code> 的路径,返回 <code>true</code>。在回溯时,我们要将当前位置的字符还原为未访问过的状态。</li>
80436
80436
</ul>
80437
80437
<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>
80439
80439
<div class="tabbed-content">
80440
80440
<div class="tabbed-block">
80441
80441
<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>
80957
80957
<span class="p">}</span>
80958
80958
</code></pre></div></td></tr></table></div>
80959
80959
</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">""</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">-></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">.<</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">.<</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">-></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"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">i</span> <span class="o">>=</span> <span class="n">m</span> <span class="o">||</span> <span class="n">j</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">j</span> <span class="o">>=</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">" "</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">.<</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>
80960
81072
</div>
80961
81073
</div>
80962
81074
<!-- solution:end -->
@@ -80990,6 +81102,11 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
80990
81102
80991
81103
<nav>
80992
81104
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
+
80993
81110
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
80994
81111
80995
81112
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
@@ -81005,16 +81122,11 @@ <h3 id="dfs">方法一:枚举 + DFS</h3>
81005
81122
<img src="https://avatars.githubusercontent.com/u/85606371?v=4&size=72" alt="xiongbinzou">
81006
81123
</a>
81007
81124
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
-
81013
81125
81014
81126
81015
81127
81016
81128
<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
81018
81130
</a>
81019
81131
81020
81132
0 commit comments