@@ -84650,7 +84650,7 @@ <h3 id="_3">方法一:哈希表</h3>
84650
84650
<p>我们遍历所有障碍点 $(a, b)$,如果 $a \gt x$ 或者 $b \gt y$,说明机器人不会经过该障碍点,跳过即可。否则,我们将 $(x, y)$ 分别减去 $k$ 倍 $(i, j)$ 的偏移量,其中 $k = \min(\lfloor a / i \rfloor, \lfloor b / j \rfloor)$,如果 $(a, b)$ 在 $vis$ 中,说明机器人会经过该障碍点,返回 <code>false</code>。</p>
84651
84651
<p>否则,遍历结束后,返回 <code>true</code>。</p>
84652
84652
<p>时间复杂度 $O(m + n)$,空间复杂度 $O(m)$。其中 $m$ 和 $n$ 分别是指令 $command$ 和障碍数组 $obstacles$ 的长度。</p>
84653
- <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>
84653
+ <div class="tabbed-set tabbed-alternate" data-tabs="1:6 "><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" />< 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">Swift </label></div>
84654
84654
<div class="tabbed-content">
84655
84655
<div class="tabbed-block">
84656
84656
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -84938,6 +84938,84 @@ <h3 id="_3">方法一:哈希表</h3>
84938
84938
<span class="p">}</span>
84939
84939
</code></pre></div></td></tr></table></div>
84940
84940
</div>
84941
+ <div class="tabbed-block">
84942
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
84943
+ <span class="normal"> 2</span>
84944
+ <span class="normal"> 3</span>
84945
+ <span class="normal"> 4</span>
84946
+ <span class="normal"> 5</span>
84947
+ <span class="normal"> 6</span>
84948
+ <span class="normal"> 7</span>
84949
+ <span class="normal"> 8</span>
84950
+ <span class="normal"> 9</span>
84951
+ <span class="normal">10</span>
84952
+ <span class="normal">11</span>
84953
+ <span class="normal">12</span>
84954
+ <span class="normal">13</span>
84955
+ <span class="normal">14</span>
84956
+ <span class="normal">15</span>
84957
+ <span class="normal">16</span>
84958
+ <span class="normal">17</span>
84959
+ <span class="normal">18</span>
84960
+ <span class="normal">19</span>
84961
+ <span class="normal">20</span>
84962
+ <span class="normal">21</span>
84963
+ <span class="normal">22</span>
84964
+ <span class="normal">23</span>
84965
+ <span class="normal">24</span>
84966
+ <span class="normal">25</span>
84967
+ <span class="normal">26</span>
84968
+ <span class="normal">27</span>
84969
+ <span class="normal">28</span>
84970
+ <span class="normal">29</span>
84971
+ <span class="normal">30</span>
84972
+ <span class="normal">31</span>
84973
+ <span class="normal">32</span>
84974
+ <span class="normal">33</span>
84975
+ <span class="normal">34</span>
84976
+ <span class="normal">35</span>
84977
+ <span class="normal">36</span>
84978
+ <span class="normal">37</span>
84979
+ <span class="normal">38</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>
84980
+ <span class="kd">func</span> <span class="nf">robot</span><span class="p">(</span><span class="kc">_</span> <span class="n">command</span><span class="p">:</span> <span class="nb">String</span><span class="p">,</span> <span class="kc">_</span> <span class="n">obstacles</span><span class="p">:</span> <span class="p">[[</span><span class="nb">Int</span><span class="p">]],</span> <span class="kc">_</span> <span class="n">x</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kc">_</span> <span class="n">y</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>
84981
+ <span class="kd">var</span> <span class="nv">visited</span><span class="p">:</span> <span class="n">Set</span><span class="o"><</span><span class="p">[</span><span class="nb">Int</span><span class="p">]</span><span class="o">></span> <span class="p">=</span> <span class="p">[]</span>
84982
+ <span class="kd">var</span> <span class="nv">i</span> <span class="p">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">j</span> <span class="p">=</span> <span class="mi">0</span>
84983
+ <span class="n">visited</span><span class="p">.</span><span class="bp">insert</span><span class="p">([</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
84984
+
84985
+ <span class="k">for</span> <span class="n">c</span> <span class="k">in</span> <span class="n">command</span> <span class="p">{</span>
84986
+ <span class="k">if</span> <span class="n">c</span> <span class="p">==</span> <span class="s">"U"</span> <span class="p">{</span>
84987
+ <span class="n">j</span> <span class="o">+=</span> <span class="mi">1</span>
84988
+ <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
84989
+ <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
84990
+ <span class="p">}</span>
84991
+ <span class="n">visited</span><span class="p">.</span><span class="bp">insert</span><span class="p">([</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">])</span>
84992
+ <span class="p">}</span>
84993
+
84994
+ <span class="kd">func</span> <span class="nf">canReach</span><span class="p">(</span><span class="kc">_</span> <span class="n">targetX</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kc">_</span> <span class="n">targetY</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>
84995
+ <span class="kd">let</span> <span class="nv">k</span> <span class="p">=</span> <span class="bp">min</span><span class="p">(</span><span class="n">targetX</span> <span class="o">/</span> <span class="n">i</span><span class="p">,</span> <span class="n">targetY</span> <span class="o">/</span> <span class="n">j</span><span class="p">)</span>
84996
+ <span class="k">return</span> <span class="n">visited</span><span class="p">.</span><span class="bp">contains</span><span class="p">([</span><span class="n">targetX</span> <span class="o">-</span> <span class="n">k</span> <span class="o">*</span> <span class="n">i</span><span class="p">,</span> <span class="n">targetY</span> <span class="o">-</span> <span class="n">k</span> <span class="o">*</span> <span class="n">j</span><span class="p">])</span>
84997
+ <span class="p">}</span>
84998
+
84999
+ <span class="k">if</span> <span class="o">!</span><span class="n">canReach</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="p">{</span>
85000
+ <span class="k">return</span> <span class="kc">false</span>
85001
+ <span class="p">}</span>
85002
+
85003
+ <span class="k">for</span> <span class="n">obstacle</span> <span class="k">in</span> <span class="n">obstacles</span> <span class="p">{</span>
85004
+ <span class="kd">let</span> <span class="nv">obstacleX</span> <span class="p">=</span> <span class="n">obstacle</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
85005
+ <span class="kd">let</span> <span class="nv">obstacleY</span> <span class="p">=</span> <span class="n">obstacle</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
85006
+ <span class="k">if</span> <span class="n">obstacleX</span> <span class="o">></span> <span class="n">x</span> <span class="o">||</span> <span class="n">obstacleY</span> <span class="o">></span> <span class="n">y</span> <span class="p">{</span>
85007
+ <span class="k">continue</span>
85008
+ <span class="p">}</span>
85009
+ <span class="k">if</span> <span class="n">canReach</span><span class="p">(</span><span class="n">obstacleX</span><span class="p">,</span> <span class="n">obstacleY</span><span class="p">)</span> <span class="p">{</span>
85010
+ <span class="k">return</span> <span class="kc">false</span>
85011
+ <span class="p">}</span>
85012
+ <span class="p">}</span>
85013
+
85014
+ <span class="k">return</span> <span class="kc">true</span>
85015
+ <span class="p">}</span>
85016
+ <span class="p">}</span>
85017
+ </code></pre></div></td></tr></table></div>
85018
+ </div>
84941
85019
</div>
84942
85020
</div>
84943
85021
<!-- solution:end -->
@@ -84971,6 +85049,11 @@ <h3 id="_3">方法一:哈希表</h3>
84971
85049
84972
85050
<nav>
84973
85051
85052
+ <a href="https://github.com/klever34" class="md-author" title="@klever34">
85053
+
85054
+ <img src="https://avatars.githubusercontent.com/u/12745225?v=4&size=72" alt="klever34">
85055
+ </a>
85056
+
84974
85057
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
84975
85058
84976
85059
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments