deploy
This commit is contained in:
parent
9166c1a38d
commit
a2df8b5fad
@ -2946,7 +2946,16 @@
|
||||
<a id="__codelineno-68-90" name="__codelineno-68-90" href="#__codelineno-68-90"></a> <span class="c1">// 更新列表容量</span>
|
||||
<a id="__codelineno-68-91" name="__codelineno-68-91" href="#__codelineno-68-91"></a> <span class="n">_capacity</span> <span class="p">=</span> <span class="n">nums</span><span class="p">.</span><span class="bp">count</span>
|
||||
<a id="__codelineno-68-92" name="__codelineno-68-92" href="#__codelineno-68-92"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-68-93" name="__codelineno-68-93" href="#__codelineno-68-93"></a><span class="p">}</span>
|
||||
<a id="__codelineno-68-93" name="__codelineno-68-93" href="#__codelineno-68-93"></a>
|
||||
<a id="__codelineno-68-94" name="__codelineno-68-94" href="#__codelineno-68-94"></a> <span class="cm">/* 将列表转换为数组 */</span>
|
||||
<a id="__codelineno-68-95" name="__codelineno-68-95" href="#__codelineno-68-95"></a> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-68-96" name="__codelineno-68-96" href="#__codelineno-68-96"></a> <span class="kd">var</span> <span class="nv">nums</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">_size</span><span class="p">)</span>
|
||||
<a id="__codelineno-68-97" name="__codelineno-68-97" href="#__codelineno-68-97"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="mi">0</span> <span class="p">..</span><span class="o"><</span> <span class="n">_size</span> <span class="p">{</span>
|
||||
<a id="__codelineno-68-98" name="__codelineno-68-98" href="#__codelineno-68-98"></a> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">=</span> <span class="kr">get</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="n">i</span><span class="p">)</span>
|
||||
<a id="__codelineno-68-99" name="__codelineno-68-99" href="#__codelineno-68-99"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-68-100" name="__codelineno-68-100" href="#__codelineno-68-100"></a> <span class="k">return</span> <span class="n">nums</span>
|
||||
<a id="__codelineno-68-101" name="__codelineno-68-101" href="#__codelineno-68-101"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-68-102" name="__codelineno-68-102" href="#__codelineno-68-102"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@ -2842,14 +2842,16 @@ O(1) < O(\log n) < O(n) < O(n^2) < O(2^n) \newline
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">space_complexity.swift</span><pre><span></span><code><a id="__codelineno-78-1" name="__codelineno-78-1" href="#__codelineno-78-1"></a><span class="cm">/* 平方阶(递归实现) */</span>
|
||||
<a id="__codelineno-78-2" name="__codelineno-78-2" href="#__codelineno-78-2"></a><span class="kd">func</span> <span class="nf">quadraticRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-78-3" name="__codelineno-78-3" href="#__codelineno-78-3"></a> <span class="k">if</span> <span class="n">n</span> <span class="o"><=</span> <span class="mi">0</span> <span class="p">{</span>
|
||||
<a id="__codelineno-78-4" name="__codelineno-78-4" href="#__codelineno-78-4"></a> <span class="k">return</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-78-5" name="__codelineno-78-5" href="#__codelineno-78-5"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-78-6" name="__codelineno-78-6" href="#__codelineno-78-6"></a> <span class="c1">// 数组 nums 长度为 n, n-1, ..., 2, 1</span>
|
||||
<a id="__codelineno-78-7" name="__codelineno-78-7" href="#__codelineno-78-7"></a> <span class="kd">let</span> <span class="nv">nums</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span><span class="p">)</span>
|
||||
<a id="__codelineno-78-8" name="__codelineno-78-8" href="#__codelineno-78-8"></a> <span class="k">return</span> <span class="n">quadraticRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<a id="__codelineno-78-9" name="__codelineno-78-9" href="#__codelineno-78-9"></a><span class="p">}</span>
|
||||
<a id="__codelineno-78-2" name="__codelineno-78-2" href="#__codelineno-78-2"></a><span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-78-3" name="__codelineno-78-3" href="#__codelineno-78-3"></a><span class="kd">func</span> <span class="nf">quadraticRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-78-4" name="__codelineno-78-4" href="#__codelineno-78-4"></a> <span class="k">if</span> <span class="n">n</span> <span class="o"><=</span> <span class="mi">0</span> <span class="p">{</span>
|
||||
<a id="__codelineno-78-5" name="__codelineno-78-5" href="#__codelineno-78-5"></a> <span class="k">return</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-78-6" name="__codelineno-78-6" href="#__codelineno-78-6"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-78-7" name="__codelineno-78-7" href="#__codelineno-78-7"></a> <span class="c1">// 数组 nums 长度为 n, n-1, ..., 2, 1</span>
|
||||
<a id="__codelineno-78-8" name="__codelineno-78-8" href="#__codelineno-78-8"></a> <span class="kd">let</span> <span class="nv">nums</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">n</span><span class="p">)</span>
|
||||
<a id="__codelineno-78-9" name="__codelineno-78-9" href="#__codelineno-78-9"></a> <span class="bp">print</span><span class="p">(</span><span class="s">"递归 n = </span><span class="si">\(</span><span class="n">n</span><span class="si">)</span><span class="s"> 中的 nums 长度 = </span><span class="si">\(</span><span class="n">nums</span><span class="p">.</span><span class="bp">count</span><span class="si">)</span><span class="s">"</span><span class="p">)</span>
|
||||
<a id="__codelineno-78-10" name="__codelineno-78-10" href="#__codelineno-78-10"></a> <span class="k">return</span> <span class="n">quadraticRecur</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<a id="__codelineno-78-11" name="__codelineno-78-11" href="#__codelineno-78-11"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@ -1712,17 +1712,18 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">leetcode_two_sum.swift</span><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="kd">func</span> <span class="nf">twoSumBruteForce</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="n">target</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a> <span class="c1">// 两层循环,时间复杂度 O(n^2)</span>
|
||||
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="bp">indices</span><span class="p">.</span><span class="bp">dropLast</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="bp">indices</span><span class="p">.</span><span class="bp">dropFirst</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a> <span class="k">if</span> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">==</span> <span class="n">target</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a> <span class="k">return</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span>
|
||||
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a> <span class="k">return</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">leetcode_two_sum.swift</span><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="cm">/* 方法一:暴力枚举 */</span>
|
||||
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="kd">func</span> <span class="nf">twoSumBruteForce</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="n">target</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a> <span class="c1">// 两层循环,时间复杂度 O(n^2)</span>
|
||||
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="bp">indices</span><span class="p">.</span><span class="bp">dropLast</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="bp">indices</span><span class="p">.</span><span class="bp">dropFirst</span><span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-6" name="__codelineno-8-6" href="#__codelineno-8-6"></a> <span class="k">if</span> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">==</span> <span class="n">target</span> <span class="p">{</span>
|
||||
<a id="__codelineno-8-7" name="__codelineno-8-7" href="#__codelineno-8-7"></a> <span class="k">return</span> <span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">]</span>
|
||||
<a id="__codelineno-8-8" name="__codelineno-8-8" href="#__codelineno-8-8"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-8-9" name="__codelineno-8-9" href="#__codelineno-8-9"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-8-10" name="__codelineno-8-10" href="#__codelineno-8-10"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-8-11" name="__codelineno-8-11" href="#__codelineno-8-11"></a> <span class="k">return</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<a id="__codelineno-8-12" name="__codelineno-8-12" href="#__codelineno-8-12"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@ -1876,18 +1877,19 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">leetcode_two_sum.swift</span><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="kd">func</span> <span class="nf">twoSumHashTable</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="n">target</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a> <span class="c1">// 辅助哈希表,空间复杂度 O(n)</span>
|
||||
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="kd">var</span> <span class="nv">dic</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">:</span> <span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="p">[:]</span>
|
||||
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="c1">// 单层循环,时间复杂度 O(n)</span>
|
||||
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="bp">indices</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a> <span class="k">if</span> <span class="kd">let</span> <span class="nv">j</span> <span class="p">=</span> <span class="n">dic</span><span class="p">[</span><span class="n">target</span> <span class="o">-</span> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a> <span class="k">return</span> <span class="p">[</span><span class="n">j</span><span class="p">,</span> <span class="n">i</span><span class="p">]</span>
|
||||
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a> <span class="n">dic</span><span class="p">[</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="p">=</span> <span class="n">i</span>
|
||||
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a> <span class="k">return</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">leetcode_two_sum.swift</span><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="cm">/* 方法二:辅助哈希表 */</span>
|
||||
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="kd">func</span> <span class="nf">twoSumHashTable</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="n">target</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="c1">// 辅助哈希表,空间复杂度 O(n)</span>
|
||||
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="kd">var</span> <span class="nv">dic</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">:</span> <span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="p">[:]</span>
|
||||
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="c1">// 单层循环,时间复杂度 O(n)</span>
|
||||
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="bp">indices</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a> <span class="k">if</span> <span class="kd">let</span> <span class="nv">j</span> <span class="p">=</span> <span class="n">dic</span><span class="p">[</span><span class="n">target</span> <span class="o">-</span> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a> <span class="k">return</span> <span class="p">[</span><span class="n">j</span><span class="p">,</span> <span class="n">i</span><span class="p">]</span>
|
||||
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a> <span class="n">dic</span><span class="p">[</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="p">=</span> <span class="n">i</span>
|
||||
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a> <span class="k">return</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@ -2565,7 +2565,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
<div class="highlight"><span class="filename">time_complexity.swift</span><pre><span></span><code><a id="__codelineno-48-1" name="__codelineno-48-1" href="#__codelineno-48-1"></a><span class="cm">/* 常数阶 */</span>
|
||||
<a id="__codelineno-48-2" name="__codelineno-48-2" href="#__codelineno-48-2"></a><span class="kd">func</span> <span class="nf">constant</span><span class="p">(</span><span class="n">n</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-48-3" name="__codelineno-48-3" href="#__codelineno-48-3"></a> <span class="kd">var</span> <span class="nv">count</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-48-4" name="__codelineno-48-4" href="#__codelineno-48-4"></a> <span class="kd">let</span> <span class="nv">size</span> <span class="p">=</span> <span class="mi">100000</span>
|
||||
<a id="__codelineno-48-4" name="__codelineno-48-4" href="#__codelineno-48-4"></a> <span class="kd">let</span> <span class="nv">size</span> <span class="p">=</span> <span class="mi">100_000</span>
|
||||
<a id="__codelineno-48-5" name="__codelineno-48-5" href="#__codelineno-48-5"></a> <span class="k">for</span> <span class="kc">_</span> <span class="k">in</span> <span class="mi">0</span> <span class="p">..</span><span class="o"><</span> <span class="n">size</span> <span class="p">{</span>
|
||||
<a id="__codelineno-48-6" name="__codelineno-48-6" href="#__codelineno-48-6"></a> <span class="bp">count</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-48-7" name="__codelineno-48-7" href="#__codelineno-48-7"></a> <span class="p">}</span>
|
||||
|
||||
@ -2568,7 +2568,47 @@ f(x) = x \% 100
|
||||
<a id="__codelineno-28-46" name="__codelineno-28-46" href="#__codelineno-28-46"></a> <span class="c1">// 置为 nil ,代表删除</span>
|
||||
<a id="__codelineno-28-47" name="__codelineno-28-47" href="#__codelineno-28-47"></a> <span class="n">bucket</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="kc">nil</span>
|
||||
<a id="__codelineno-28-48" name="__codelineno-28-48" href="#__codelineno-28-48"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-49" name="__codelineno-28-49" href="#__codelineno-28-49"></a><span class="p">}</span>
|
||||
<a id="__codelineno-28-49" name="__codelineno-28-49" href="#__codelineno-28-49"></a>
|
||||
<a id="__codelineno-28-50" name="__codelineno-28-50" href="#__codelineno-28-50"></a> <span class="cm">/* 获取所有键值对 */</span>
|
||||
<a id="__codelineno-28-51" name="__codelineno-28-51" href="#__codelineno-28-51"></a> <span class="kd">func</span> <span class="nf">entrySet</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="n">Entry</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-52" name="__codelineno-28-52" href="#__codelineno-28-52"></a> <span class="kd">var</span> <span class="nv">entrySet</span><span class="p">:</span> <span class="p">[</span><span class="n">Entry</span><span class="p">]</span> <span class="p">=</span> <span class="p">[]</span>
|
||||
<a id="__codelineno-28-53" name="__codelineno-28-53" href="#__codelineno-28-53"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">bucket</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-54" name="__codelineno-28-54" href="#__codelineno-28-54"></a> <span class="k">if</span> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">pair</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-55" name="__codelineno-28-55" href="#__codelineno-28-55"></a> <span class="n">entrySet</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">pair</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-56" name="__codelineno-28-56" href="#__codelineno-28-56"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-57" name="__codelineno-28-57" href="#__codelineno-28-57"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-58" name="__codelineno-28-58" href="#__codelineno-28-58"></a> <span class="k">return</span> <span class="n">entrySet</span>
|
||||
<a id="__codelineno-28-59" name="__codelineno-28-59" href="#__codelineno-28-59"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-60" name="__codelineno-28-60" href="#__codelineno-28-60"></a>
|
||||
<a id="__codelineno-28-61" name="__codelineno-28-61" href="#__codelineno-28-61"></a> <span class="cm">/* 获取所有键 */</span>
|
||||
<a id="__codelineno-28-62" name="__codelineno-28-62" href="#__codelineno-28-62"></a> <span class="kd">func</span> <span class="nf">keySet</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-63" name="__codelineno-28-63" href="#__codelineno-28-63"></a> <span class="kd">var</span> <span class="nv">keySet</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="p">[]</span>
|
||||
<a id="__codelineno-28-64" name="__codelineno-28-64" href="#__codelineno-28-64"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">bucket</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-65" name="__codelineno-28-65" href="#__codelineno-28-65"></a> <span class="k">if</span> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">pair</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-66" name="__codelineno-28-66" href="#__codelineno-28-66"></a> <span class="n">keySet</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">pair</span><span class="p">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-67" name="__codelineno-28-67" href="#__codelineno-28-67"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-68" name="__codelineno-28-68" href="#__codelineno-28-68"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-69" name="__codelineno-28-69" href="#__codelineno-28-69"></a> <span class="k">return</span> <span class="n">keySet</span>
|
||||
<a id="__codelineno-28-70" name="__codelineno-28-70" href="#__codelineno-28-70"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-71" name="__codelineno-28-71" href="#__codelineno-28-71"></a>
|
||||
<a id="__codelineno-28-72" name="__codelineno-28-72" href="#__codelineno-28-72"></a> <span class="cm">/* 获取所有值 */</span>
|
||||
<a id="__codelineno-28-73" name="__codelineno-28-73" href="#__codelineno-28-73"></a> <span class="kd">func</span> <span class="nf">valueSet</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">String</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-74" name="__codelineno-28-74" href="#__codelineno-28-74"></a> <span class="kd">var</span> <span class="nv">valueSet</span><span class="p">:</span> <span class="p">[</span><span class="nb">String</span><span class="p">]</span> <span class="p">=</span> <span class="p">[]</span>
|
||||
<a id="__codelineno-28-75" name="__codelineno-28-75" href="#__codelineno-28-75"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">bucket</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-76" name="__codelineno-28-76" href="#__codelineno-28-76"></a> <span class="k">if</span> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">pair</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-77" name="__codelineno-28-77" href="#__codelineno-28-77"></a> <span class="n">valueSet</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">pair</span><span class="p">.</span><span class="n">val</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-78" name="__codelineno-28-78" href="#__codelineno-28-78"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-79" name="__codelineno-28-79" href="#__codelineno-28-79"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-80" name="__codelineno-28-80" href="#__codelineno-28-80"></a> <span class="k">return</span> <span class="n">valueSet</span>
|
||||
<a id="__codelineno-28-81" name="__codelineno-28-81" href="#__codelineno-28-81"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-82" name="__codelineno-28-82" href="#__codelineno-28-82"></a>
|
||||
<a id="__codelineno-28-83" name="__codelineno-28-83" href="#__codelineno-28-83"></a> <span class="cm">/* 打印哈希表 */</span>
|
||||
<a id="__codelineno-28-84" name="__codelineno-28-84" href="#__codelineno-28-84"></a> <span class="kd">func</span> <span class="nf">print</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-85" name="__codelineno-28-85" href="#__codelineno-28-85"></a> <span class="k">for</span> <span class="n">entry</span> <span class="k">in</span> <span class="n">entrySet</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-86" name="__codelineno-28-86" href="#__codelineno-28-86"></a> <span class="n">Swift</span><span class="p">.</span><span class="bp">print</span><span class="p">(</span><span class="s">"</span><span class="si">\(</span><span class="n">entry</span><span class="p">.</span><span class="n">key</span><span class="si">)</span><span class="s"> -> </span><span class="si">\(</span><span class="n">entry</span><span class="p">.</span><span class="n">val</span><span class="si">)</span><span class="s">"</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-87" name="__codelineno-28-87" href="#__codelineno-28-87"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-88" name="__codelineno-28-88" href="#__codelineno-28-88"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-89" name="__codelineno-28-89" href="#__codelineno-28-89"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@ -2028,27 +2028,20 @@
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">my_heap.swift</span><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="kd">var</span> <span class="nv">maxHeap</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span>
|
||||
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>
|
||||
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="cm">/* 构造函数,建立空堆 */</span>
|
||||
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">maxHeap</span> <span class="p">=</span> <span class="p">[]</span>
|
||||
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a>
|
||||
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="cm">/* 获取左子结点索引 */</span>
|
||||
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a><span class="kd">func</span> <span class="nf">left</span><span class="p">(</span><span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a>
|
||||
<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a><span class="cm">/* 获取右子结点索引 */</span>
|
||||
<a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a><span class="kd">func</span> <span class="nf">right</span><span class="p">(</span><span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-15" name="__codelineno-18-15" href="#__codelineno-18-15"></a> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span>
|
||||
<a id="__codelineno-18-16" name="__codelineno-18-16" href="#__codelineno-18-16"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-17" name="__codelineno-18-17" href="#__codelineno-18-17"></a>
|
||||
<a id="__codelineno-18-18" name="__codelineno-18-18" href="#__codelineno-18-18"></a><span class="cm">/* 获取父结点索引 */</span>
|
||||
<a id="__codelineno-18-19" name="__codelineno-18-19" href="#__codelineno-18-19"></a><span class="kd">func</span> <span class="nf">parent</span><span class="p">(</span><span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-20" name="__codelineno-18-20" href="#__codelineno-18-20"></a> <span class="p">(</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> <span class="c1">// 向下整除</span>
|
||||
<a id="__codelineno-18-21" name="__codelineno-18-21" href="#__codelineno-18-21"></a><span class="p">}</span>
|
||||
<div class="highlight"><span class="filename">my_heap.swift</span><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="cm">/* 获取左子结点索引 */</span>
|
||||
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="kd">func</span> <span class="nf">left</span><span class="p">(</span><span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a>
|
||||
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="cm">/* 获取右子结点索引 */</span>
|
||||
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a><span class="kd">func</span> <span class="nf">right</span><span class="p">(</span><span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a> <span class="mi">2</span> <span class="o">*</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span>
|
||||
<a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a>
|
||||
<a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="cm">/* 获取父结点索引 */</span>
|
||||
<a id="__codelineno-18-12" name="__codelineno-18-12" href="#__codelineno-18-12"></a><span class="kd">func</span> <span class="nf">parent</span><span class="p">(</span><span class="n">i</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-13" name="__codelineno-18-13" href="#__codelineno-18-13"></a> <span class="p">(</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> <span class="c1">// 向下整除</span>
|
||||
<a id="__codelineno-18-14" name="__codelineno-18-14" href="#__codelineno-18-14"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@ -1729,14 +1729,14 @@
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">quick_sort.js</span><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="cm">/* 元素交换 */</span>
|
||||
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
|
||||
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
|
||||
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tmp</span><span class="p">;</span>
|
||||
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="p">}</span>
|
||||
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a>
|
||||
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="cm">/* 哨兵划分 */</span>
|
||||
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="kd">function</span><span class="w"> </span><span class="nx">partition</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">left</span><span class="p">,</span><span class="w"> </span><span class="nx">right</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="nx">partition</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">left</span><span class="p">,</span><span class="w"> </span><span class="nx">right</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="w"> </span><span class="c1">// 以 nums[left] 作为基准数</span>
|
||||
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="w"> </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="nx">left</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">right</span><span class="p">;</span>
|
||||
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
@ -1747,23 +1747,23 @@
|
||||
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a><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="c1">// 从左向右找首个大于基准数的元素</span>
|
||||
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a><span class="w"> </span><span class="c1">// 元素交换</span>
|
||||
<a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a><span class="w"> </span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">);</span><span class="w"> </span><span class="c1">// 交换这两个元素</span>
|
||||
<a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">);</span><span class="w"> </span><span class="c1">// 交换这两个元素</span>
|
||||
<a id="__codelineno-4-21" name="__codelineno-4-21" href="#__codelineno-4-21"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-4-22" name="__codelineno-4-22" href="#__codelineno-4-22"></a><span class="w"> </span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">left</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将基准数交换至两子数组的分界线</span>
|
||||
<a id="__codelineno-4-22" name="__codelineno-4-22" href="#__codelineno-4-22"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">left</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将基准数交换至两子数组的分界线</span>
|
||||
<a id="__codelineno-4-23" name="__codelineno-4-23" href="#__codelineno-4-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span><span class="w"> </span><span class="c1">// 返回基准数的索引</span>
|
||||
<a id="__codelineno-4-24" name="__codelineno-4-24" href="#__codelineno-4-24"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">quick_sort.ts</span><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="cm">/* 元素交换 */</span>
|
||||
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="kd">function</span><span class="w"> </span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</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">i</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">j</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="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</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">i</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">j</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="ow">void</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
|
||||
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
|
||||
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tmp</span><span class="p">;</span>
|
||||
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="p">}</span>
|
||||
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a>
|
||||
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="cm">/* 哨兵划分 */</span>
|
||||
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="kd">function</span><span class="w"> </span><span class="nx">partition</span><span class="p">(</span><span class="nx">nums</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">left</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">right</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>
|
||||
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="nx">partition</span><span class="p">(</span><span class="nx">nums</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">left</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">right</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>
|
||||
<a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a><span class="w"> </span><span class="c1">// 以 nums[left] 作为基准数</span>
|
||||
<a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a><span class="w"> </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="nx">left</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">right</span><span class="p">;</span>
|
||||
<a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
@ -1774,9 +1774,9 @@
|
||||
<a id="__codelineno-5-17" name="__codelineno-5-17" href="#__codelineno-5-17"></a><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="c1">// 从左向右找首个大于基准数的元素</span>
|
||||
<a id="__codelineno-5-18" name="__codelineno-5-18" href="#__codelineno-5-18"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-5-19" name="__codelineno-5-19" href="#__codelineno-5-19"></a><span class="w"> </span><span class="c1">// 元素交换</span>
|
||||
<a id="__codelineno-5-20" name="__codelineno-5-20" href="#__codelineno-5-20"></a><span class="w"> </span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">);</span><span class="w"> </span><span class="c1">// 交换这两个元素</span>
|
||||
<a id="__codelineno-5-20" name="__codelineno-5-20" href="#__codelineno-5-20"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">);</span><span class="w"> </span><span class="c1">// 交换这两个元素</span>
|
||||
<a id="__codelineno-5-21" name="__codelineno-5-21" href="#__codelineno-5-21"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-5-22" name="__codelineno-5-22" href="#__codelineno-5-22"></a><span class="w"> </span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">left</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将基准数交换至两子数组的分界线</span>
|
||||
<a id="__codelineno-5-22" name="__codelineno-5-22" href="#__codelineno-5-22"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">swap</span><span class="p">(</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">,</span><span class="w"> </span><span class="nx">left</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将基准数交换至两子数组的分界线</span>
|
||||
<a id="__codelineno-5-23" name="__codelineno-5-23" href="#__codelineno-5-23"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">i</span><span class="p">;</span><span class="w"> </span><span class="c1">// 返回基准数的索引</span>
|
||||
<a id="__codelineno-5-24" name="__codelineno-5-24" href="#__codelineno-5-24"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
@ -2231,14 +2231,13 @@
|
||||
<a id="__codelineno-28-10" name="__codelineno-28-10" href="#__codelineno-28-10"></a><span class="p">}</span>
|
||||
<a id="__codelineno-28-11" name="__codelineno-28-11" href="#__codelineno-28-11"></a>
|
||||
<a id="__codelineno-28-12" name="__codelineno-28-12" href="#__codelineno-28-12"></a><span class="cm">/* 哨兵划分(三数取中值) */</span>
|
||||
<a id="__codelineno-28-13" name="__codelineno-28-13" href="#__codelineno-28-13"></a><span class="kd">func</span> <span class="nf">partition</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="kr">inout</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="kr">left</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-13" name="__codelineno-28-13" href="#__codelineno-28-13"></a><span class="kd">func</span> <span class="nf">partitionMedian</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="kr">inout</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="kr">left</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-14" name="__codelineno-28-14" href="#__codelineno-28-14"></a> <span class="c1">// 选取三个候选元素的中位数</span>
|
||||
<a id="__codelineno-28-15" name="__codelineno-28-15" href="#__codelineno-28-15"></a> <span class="kd">let</span> <span class="nv">med</span> <span class="p">=</span> <span class="n">medianThree</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="kr">left</span><span class="p">,</span> <span class="n">mid</span><span class="p">:</span> <span class="p">(</span><span class="kr">left</span> <span class="o">+</span> <span class="kr">right</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="kr">right</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-16" name="__codelineno-28-16" href="#__codelineno-28-16"></a> <span class="c1">// 将中位数交换至数组最左端</span>
|
||||
<a id="__codelineno-28-17" name="__codelineno-28-17" href="#__codelineno-28-17"></a> <span class="bp">swap</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="kr">left</span><span class="p">,</span> <span class="n">j</span><span class="p">:</span> <span class="n">med</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-18" name="__codelineno-28-18" href="#__codelineno-28-18"></a> <span class="c1">// 以 nums[left] 作为基准数</span>
|
||||
<a id="__codelineno-28-19" name="__codelineno-28-19" href="#__codelineno-28-19"></a> <span class="c1">// 下同省略...</span>
|
||||
<a id="__codelineno-28-20" name="__codelineno-28-20" href="#__codelineno-28-20"></a><span class="p">}</span>
|
||||
<a id="__codelineno-28-18" name="__codelineno-28-18" href="#__codelineno-28-18"></a> <span class="k">return</span> <span class="bp">partition</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="kr">left</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="kr">right</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-19" name="__codelineno-28-19" href="#__codelineno-28-19"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@ -2393,7 +2392,7 @@
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><span class="filename">quick_sort.swift</span><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="cm">/* 快速排序(尾递归优化) */</span>
|
||||
<a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a><span class="kd">func</span> <span class="nf">quickSort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="kr">inout</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="kr">left</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a><span class="kd">func</span> <span class="nf">quickSortTailCall</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="kr">inout</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="kr">left</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a> <span class="kd">var</span> <span class="nv">left</span> <span class="p">=</span> <span class="kr">left</span>
|
||||
<a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a> <span class="kd">var</span> <span class="nv">right</span> <span class="p">=</span> <span class="kr">right</span>
|
||||
<a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a> <span class="c1">// 子数组长度为 1 时终止</span>
|
||||
@ -2402,10 +2401,10 @@
|
||||
<a id="__codelineno-38-8" name="__codelineno-38-8" href="#__codelineno-38-8"></a> <span class="kd">let</span> <span class="nv">pivot</span> <span class="p">=</span> <span class="bp">partition</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="kr">left</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="kr">right</span><span class="p">)</span>
|
||||
<a id="__codelineno-38-9" name="__codelineno-38-9" href="#__codelineno-38-9"></a> <span class="c1">// 对两个子数组中较短的那个执行快排</span>
|
||||
<a id="__codelineno-38-10" name="__codelineno-38-10" href="#__codelineno-38-10"></a> <span class="k">if</span> <span class="p">(</span><span class="n">pivot</span> <span class="o">-</span> <span class="kr">left</span><span class="p">)</span> <span class="o"><</span> <span class="p">(</span><span class="kr">right</span> <span class="o">-</span> <span class="n">pivot</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-38-11" name="__codelineno-38-11" href="#__codelineno-38-11"></a> <span class="n">quickSort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="kr">left</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="n">pivot</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="c1">// 递归排序左子数组</span>
|
||||
<a id="__codelineno-38-11" name="__codelineno-38-11" href="#__codelineno-38-11"></a> <span class="n">quickSortTailCall</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="kr">left</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="n">pivot</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="c1">// 递归排序左子数组</span>
|
||||
<a id="__codelineno-38-12" name="__codelineno-38-12" href="#__codelineno-38-12"></a> <span class="kr">left</span> <span class="p">=</span> <span class="n">pivot</span> <span class="o">+</span> <span class="mi">1</span> <span class="c1">// 剩余待排序区间为 [pivot + 1, right]</span>
|
||||
<a id="__codelineno-38-13" name="__codelineno-38-13" href="#__codelineno-38-13"></a> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
||||
<a id="__codelineno-38-14" name="__codelineno-38-14" href="#__codelineno-38-14"></a> <span class="n">quickSort</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="n">pivot</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="kr">right</span><span class="p">)</span> <span class="c1">// 递归排序右子数组</span>
|
||||
<a id="__codelineno-38-14" name="__codelineno-38-14" href="#__codelineno-38-14"></a> <span class="n">quickSortTailCall</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span> <span class="p">&</span><span class="n">nums</span><span class="p">,</span> <span class="kr">left</span><span class="p">:</span> <span class="n">pivot</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="kr">right</span><span class="p">:</span> <span class="kr">right</span><span class="p">)</span> <span class="c1">// 递归排序右子数组</span>
|
||||
<a id="__codelineno-38-15" name="__codelineno-38-15" href="#__codelineno-38-15"></a> <span class="kr">right</span> <span class="p">=</span> <span class="n">pivot</span> <span class="o">-</span> <span class="mi">1</span> <span class="c1">// 剩余待排序区间为 [left, pivot - 1]</span>
|
||||
<a id="__codelineno-38-16" name="__codelineno-38-16" href="#__codelineno-38-16"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-38-17" name="__codelineno-38-17" href="#__codelineno-38-17"></a> <span class="p">}</span>
|
||||
|
||||
@ -2405,7 +2405,18 @@
|
||||
<a id="__codelineno-18-50" name="__codelineno-18-50" href="#__codelineno-18-50"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-51" name="__codelineno-18-51" href="#__codelineno-18-51"></a> <span class="k">return</span> <span class="n">front</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-18-52" name="__codelineno-18-52" href="#__codelineno-18-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-53" name="__codelineno-18-53" href="#__codelineno-18-53"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-53" name="__codelineno-18-53" href="#__codelineno-18-53"></a>
|
||||
<a id="__codelineno-18-54" name="__codelineno-18-54" href="#__codelineno-18-54"></a> <span class="cm">/* 将链表转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-18-55" name="__codelineno-18-55" href="#__codelineno-18-55"></a> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-56" name="__codelineno-18-56" href="#__codelineno-18-56"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">front</span>
|
||||
<a id="__codelineno-18-57" name="__codelineno-18-57" href="#__codelineno-18-57"></a> <span class="kd">var</span> <span class="nv">res</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">size</span><span class="p">())</span>
|
||||
<a id="__codelineno-18-58" name="__codelineno-18-58" href="#__codelineno-18-58"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="n">res</span><span class="p">.</span><span class="bp">indices</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-59" name="__codelineno-18-59" href="#__codelineno-18-59"></a> <span class="n">res</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">=</span> <span class="n">node</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-18-60" name="__codelineno-18-60" href="#__codelineno-18-60"></a> <span class="n">node</span> <span class="p">=</span> <span class="n">node</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-18-61" name="__codelineno-18-61" href="#__codelineno-18-61"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-62" name="__codelineno-18-62" href="#__codelineno-18-62"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-18-63" name="__codelineno-18-63" href="#__codelineno-18-63"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-64" name="__codelineno-18-64" href="#__codelineno-18-64"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@ -2971,7 +2982,17 @@
|
||||
<a id="__codelineno-28-55" name="__codelineno-28-55" href="#__codelineno-28-55"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-56" name="__codelineno-28-56" href="#__codelineno-28-56"></a> <span class="k">return</span> <span class="n">nums</span><span class="p">[</span><span class="n">front</span><span class="p">]</span>
|
||||
<a id="__codelineno-28-57" name="__codelineno-28-57" href="#__codelineno-28-57"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-58" name="__codelineno-28-58" href="#__codelineno-28-58"></a><span class="p">}</span>
|
||||
<a id="__codelineno-28-58" name="__codelineno-28-58" href="#__codelineno-28-58"></a>
|
||||
<a id="__codelineno-28-59" name="__codelineno-28-59" href="#__codelineno-28-59"></a> <span class="cm">/* 返回数组 */</span>
|
||||
<a id="__codelineno-28-60" name="__codelineno-28-60" href="#__codelineno-28-60"></a> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-61" name="__codelineno-28-61" href="#__codelineno-28-61"></a> <span class="c1">// 仅转换有效长度范围内的列表元素</span>
|
||||
<a id="__codelineno-28-62" name="__codelineno-28-62" href="#__codelineno-28-62"></a> <span class="kd">var</span> <span class="nv">res</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">queSize</span><span class="p">)</span>
|
||||
<a id="__codelineno-28-63" name="__codelineno-28-63" href="#__codelineno-28-63"></a> <span class="k">for</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="k">in</span> <span class="n">sequence</span><span class="p">(</span><span class="bp">first</span><span class="p">:</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">front</span><span class="p">),</span> <span class="n">next</span><span class="p">:</span> <span class="p">{</span> <span class="nv">$0</span> <span class="o"><</span> <span class="kc">self</span><span class="p">.</span><span class="n">queSize</span> <span class="o">-</span> <span class="mi">1</span> <span class="p">?</span> <span class="p">(</span><span class="nv">$0</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nv">$1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="p">:</span> <span class="kc">nil</span> <span class="p">})</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-64" name="__codelineno-28-64" href="#__codelineno-28-64"></a> <span class="n">res</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">=</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span> <span class="o">%</span> <span class="n">capacity</span><span class="p">()]</span>
|
||||
<a id="__codelineno-28-65" name="__codelineno-28-65" href="#__codelineno-28-65"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-66" name="__codelineno-28-66" href="#__codelineno-28-66"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-28-67" name="__codelineno-28-67" href="#__codelineno-28-67"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-68" name="__codelineno-28-68" href="#__codelineno-28-68"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@ -2382,7 +2382,18 @@
|
||||
<a id="__codelineno-18-39" name="__codelineno-18-39" href="#__codelineno-18-39"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-40" name="__codelineno-18-40" href="#__codelineno-18-40"></a> <span class="k">return</span> <span class="n">_peek</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-18-41" name="__codelineno-18-41" href="#__codelineno-18-41"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-42" name="__codelineno-18-42" href="#__codelineno-18-42"></a><span class="p">}</span>
|
||||
<a id="__codelineno-18-42" name="__codelineno-18-42" href="#__codelineno-18-42"></a>
|
||||
<a id="__codelineno-18-43" name="__codelineno-18-43" href="#__codelineno-18-43"></a> <span class="cm">/* 将 List 转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-18-44" name="__codelineno-18-44" href="#__codelineno-18-44"></a> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-45" name="__codelineno-18-45" href="#__codelineno-18-45"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">_peek</span>
|
||||
<a id="__codelineno-18-46" name="__codelineno-18-46" href="#__codelineno-18-46"></a> <span class="kd">var</span> <span class="nv">res</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">_size</span><span class="p">)</span>
|
||||
<a id="__codelineno-18-47" name="__codelineno-18-47" href="#__codelineno-18-47"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="n">sequence</span><span class="p">(</span><span class="bp">first</span><span class="p">:</span> <span class="n">res</span><span class="p">.</span><span class="bp">count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">next</span><span class="p">:</span> <span class="p">{</span> <span class="nv">$0</span> <span class="o">>=</span> <span class="mi">0</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">?</span> <span class="nv">$0</span> <span class="o">-</span> <span class="mi">1</span> <span class="p">:</span> <span class="kc">nil</span> <span class="p">})</span> <span class="p">{</span>
|
||||
<a id="__codelineno-18-48" name="__codelineno-18-48" href="#__codelineno-18-48"></a> <span class="n">res</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">=</span> <span class="n">node</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-18-49" name="__codelineno-18-49" href="#__codelineno-18-49"></a> <span class="n">node</span> <span class="p">=</span> <span class="n">node</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-18-50" name="__codelineno-18-50" href="#__codelineno-18-50"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-51" name="__codelineno-18-51" href="#__codelineno-18-51"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-18-52" name="__codelineno-18-52" href="#__codelineno-18-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-18-53" name="__codelineno-18-53" href="#__codelineno-18-53"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@ -2756,7 +2767,12 @@
|
||||
<a id="__codelineno-28-38" name="__codelineno-28-38" href="#__codelineno-28-38"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-39" name="__codelineno-28-39" href="#__codelineno-28-39"></a> <span class="k">return</span> <span class="n">stack</span><span class="p">.</span><span class="bp">last</span><span class="p">!</span>
|
||||
<a id="__codelineno-28-40" name="__codelineno-28-40" href="#__codelineno-28-40"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-41" name="__codelineno-28-41" href="#__codelineno-28-41"></a><span class="p">}</span>
|
||||
<a id="__codelineno-28-41" name="__codelineno-28-41" href="#__codelineno-28-41"></a>
|
||||
<a id="__codelineno-28-42" name="__codelineno-28-42" href="#__codelineno-28-42"></a> <span class="cm">/* 将 List 转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-28-43" name="__codelineno-28-43" href="#__codelineno-28-43"></a> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-28-44" name="__codelineno-28-44" href="#__codelineno-28-44"></a> <span class="n">stack</span>
|
||||
<a id="__codelineno-28-45" name="__codelineno-28-45" href="#__codelineno-28-45"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-28-46" name="__codelineno-28-46" href="#__codelineno-28-46"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
File diff suppressed because one or more lines are too long
BIN
sitemap.xml.gz
BIN
sitemap.xml.gz
Binary file not shown.
Loading…
Reference in New Issue
Block a user