mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-15 13:10:59 +00:00
deploy
This commit is contained in:
@@ -2350,7 +2350,12 @@
|
||||
<a id="__codelineno-53-9" name="__codelineno-53-9" href="#__codelineno-53-9"></a> <span class="k">for</span> <span class="n">num</span> <span class="k">in</span> <span class="n">nums</span> <span class="p">{</span>
|
||||
<a id="__codelineno-53-10" name="__codelineno-53-10" href="#__codelineno-53-10"></a> <span class="bp">count</span> <span class="o">+=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-53-11" name="__codelineno-53-11" href="#__codelineno-53-11"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-53-12" name="__codelineno-53-12" href="#__codelineno-53-12"></a><span class="p">}</span>
|
||||
<a id="__codelineno-53-12" name="__codelineno-53-12" href="#__codelineno-53-12"></a> <span class="c1">// 同时遍历数据索引和元素</span>
|
||||
<a id="__codelineno-53-13" name="__codelineno-53-13" href="#__codelineno-53-13"></a> <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">num</span><span class="p">)</span> <span class="k">in</span> <span class="n">nums</span><span class="p">.</span><span class="n">enumerated</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-53-14" name="__codelineno-53-14" href="#__codelineno-53-14"></a> <span class="bp">count</span> <span class="o">+=</span> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
|
||||
<a id="__codelineno-53-15" name="__codelineno-53-15" href="#__codelineno-53-15"></a> <span class="bp">count</span> <span class="o">+=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-53-16" name="__codelineno-53-16" href="#__codelineno-53-16"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-53-17" name="__codelineno-53-17" href="#__codelineno-53-17"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -2249,8 +2249,7 @@
|
||||
<a id="__codelineno-41-7" name="__codelineno-41-7" href="#__codelineno-41-7"></a> <span class="kd">let</span> <span class="nv">P</span> <span class="p">=</span> <span class="n">n0</span><span class="p">.</span><span class="n">next</span>
|
||||
<a id="__codelineno-41-8" name="__codelineno-41-8" href="#__codelineno-41-8"></a> <span class="kd">let</span> <span class="nv">n1</span> <span class="p">=</span> <span class="n">P</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-41-9" name="__codelineno-41-9" href="#__codelineno-41-9"></a> <span class="n">n0</span><span class="p">.</span><span class="n">next</span> <span class="p">=</span> <span class="n">n1</span>
|
||||
<a id="__codelineno-41-10" name="__codelineno-41-10" href="#__codelineno-41-10"></a> <span class="n">P</span><span class="p">?.</span><span class="n">next</span> <span class="p">=</span> <span class="kc">nil</span>
|
||||
<a id="__codelineno-41-11" name="__codelineno-41-11" href="#__codelineno-41-11"></a><span class="p">}</span>
|
||||
<a id="__codelineno-41-10" name="__codelineno-41-10" href="#__codelineno-41-10"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -2913,105 +2913,104 @@
|
||||
<div class="highlight"><span class="filename">my_list.swift</span><pre><span></span><code><a id="__codelineno-77-1" name="__codelineno-77-1" href="#__codelineno-77-1"></a><span class="cm">/* 列表类 */</span>
|
||||
<a id="__codelineno-77-2" name="__codelineno-77-2" href="#__codelineno-77-2"></a><span class="kd">class</span> <span class="nc">MyList</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-3" name="__codelineno-77-3" href="#__codelineno-77-3"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">arr</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="c1">// 数组(存储列表元素)</span>
|
||||
<a id="__codelineno-77-4" name="__codelineno-77-4" href="#__codelineno-77-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_capacity</span> <span class="p">=</span> <span class="mi">10</span> <span class="c1">// 列表容量</span>
|
||||
<a id="__codelineno-77-5" name="__codelineno-77-5" href="#__codelineno-77-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 列表长度(当前元素数量)</span>
|
||||
<a id="__codelineno-77-6" name="__codelineno-77-6" href="#__codelineno-77-6"></a> <span class="kd">private</span> <span class="kd">let</span> <span class="nv">extendRatio</span> <span class="p">=</span> <span class="mi">2</span> <span class="c1">// 每次列表扩容的倍数</span>
|
||||
<a id="__codelineno-77-4" name="__codelineno-77-4" href="#__codelineno-77-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_capacity</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 列表容量</span>
|
||||
<a id="__codelineno-77-5" name="__codelineno-77-5" href="#__codelineno-77-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 列表长度(当前元素数量)</span>
|
||||
<a id="__codelineno-77-6" name="__codelineno-77-6" href="#__codelineno-77-6"></a> <span class="kd">private</span> <span class="kd">let</span> <span class="nv">extendRatio</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 每次列表扩容的倍数</span>
|
||||
<a id="__codelineno-77-7" name="__codelineno-77-7" href="#__codelineno-77-7"></a>
|
||||
<a id="__codelineno-77-8" name="__codelineno-77-8" href="#__codelineno-77-8"></a> <span class="cm">/* 构造方法 */</span>
|
||||
<a id="__codelineno-77-9" name="__codelineno-77-9" href="#__codelineno-77-9"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-10" name="__codelineno-77-10" href="#__codelineno-77-10"></a> <span class="n">arr</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">_capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-11" name="__codelineno-77-11" href="#__codelineno-77-11"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-12" name="__codelineno-77-12" href="#__codelineno-77-12"></a>
|
||||
<a id="__codelineno-77-13" name="__codelineno-77-13" href="#__codelineno-77-13"></a> <span class="cm">/* 获取列表长度(当前元素数量)*/</span>
|
||||
<a id="__codelineno-77-14" name="__codelineno-77-14" href="#__codelineno-77-14"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-15" name="__codelineno-77-15" href="#__codelineno-77-15"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-77-16" name="__codelineno-77-16" href="#__codelineno-77-16"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-17" name="__codelineno-77-17" href="#__codelineno-77-17"></a>
|
||||
<a id="__codelineno-77-18" name="__codelineno-77-18" href="#__codelineno-77-18"></a> <span class="cm">/* 获取列表容量 */</span>
|
||||
<a id="__codelineno-77-19" name="__codelineno-77-19" href="#__codelineno-77-19"></a> <span class="kd">func</span> <span class="nf">capacity</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-20" name="__codelineno-77-20" href="#__codelineno-77-20"></a> <span class="n">_capacity</span>
|
||||
<a id="__codelineno-77-21" name="__codelineno-77-21" href="#__codelineno-77-21"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-22" name="__codelineno-77-22" href="#__codelineno-77-22"></a>
|
||||
<a id="__codelineno-77-23" name="__codelineno-77-23" href="#__codelineno-77-23"></a> <span class="cm">/* 访问元素 */</span>
|
||||
<a id="__codelineno-77-24" name="__codelineno-77-24" href="#__codelineno-77-24"></a> <span class="kd">func</span> <span class="nf">get</span><span class="p">(</span><span class="n">index</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-77-25" name="__codelineno-77-25" href="#__codelineno-77-25"></a> <span class="c1">// 索引如果越界则抛出错误,下同</span>
|
||||
<a id="__codelineno-77-26" name="__codelineno-77-26" href="#__codelineno-77-26"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">_size</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-27" name="__codelineno-77-27" href="#__codelineno-77-27"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-28" name="__codelineno-77-28" href="#__codelineno-77-28"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-29" name="__codelineno-77-29" href="#__codelineno-77-29"></a> <span class="k">return</span> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-30" name="__codelineno-77-30" href="#__codelineno-77-30"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-31" name="__codelineno-77-31" href="#__codelineno-77-31"></a>
|
||||
<a id="__codelineno-77-32" name="__codelineno-77-32" href="#__codelineno-77-32"></a> <span class="cm">/* 更新元素 */</span>
|
||||
<a id="__codelineno-77-33" name="__codelineno-77-33" href="#__codelineno-77-33"></a> <span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-34" name="__codelineno-77-34" href="#__codelineno-77-34"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">_size</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-35" name="__codelineno-77-35" href="#__codelineno-77-35"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-36" name="__codelineno-77-36" href="#__codelineno-77-36"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-37" name="__codelineno-77-37" href="#__codelineno-77-37"></a> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-38" name="__codelineno-77-38" href="#__codelineno-77-38"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-39" name="__codelineno-77-39" href="#__codelineno-77-39"></a>
|
||||
<a id="__codelineno-77-40" name="__codelineno-77-40" href="#__codelineno-77-40"></a> <span class="cm">/* 在尾部添加元素 */</span>
|
||||
<a id="__codelineno-77-41" name="__codelineno-77-41" href="#__codelineno-77-41"></a> <span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-42" name="__codelineno-77-42" href="#__codelineno-77-42"></a> <span class="c1">// 元素数量超出容量时,触发扩容机制</span>
|
||||
<a id="__codelineno-77-43" name="__codelineno-77-43" href="#__codelineno-77-43"></a> <span class="k">if</span> <span class="n">_size</span> <span class="p">==</span> <span class="n">_capacity</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-44" name="__codelineno-77-44" href="#__codelineno-77-44"></a> <span class="n">extendCapacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-77-45" name="__codelineno-77-45" href="#__codelineno-77-45"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-46" name="__codelineno-77-46" href="#__codelineno-77-46"></a> <span class="n">arr</span><span class="p">[</span><span class="n">_size</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-47" name="__codelineno-77-47" href="#__codelineno-77-47"></a> <span class="c1">// 更新元素数量</span>
|
||||
<a id="__codelineno-77-48" name="__codelineno-77-48" href="#__codelineno-77-48"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-77-49" name="__codelineno-77-49" href="#__codelineno-77-49"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-50" name="__codelineno-77-50" href="#__codelineno-77-50"></a>
|
||||
<a id="__codelineno-77-51" name="__codelineno-77-51" href="#__codelineno-77-51"></a> <span class="cm">/* 在中间插入元素 */</span>
|
||||
<a id="__codelineno-77-52" name="__codelineno-77-52" href="#__codelineno-77-52"></a> <span class="kd">func</span> <span class="nf">insert</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-53" name="__codelineno-77-53" href="#__codelineno-77-53"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">_size</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-54" name="__codelineno-77-54" href="#__codelineno-77-54"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-55" name="__codelineno-77-55" href="#__codelineno-77-55"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-56" name="__codelineno-77-56" href="#__codelineno-77-56"></a> <span class="c1">// 元素数量超出容量时,触发扩容机制</span>
|
||||
<a id="__codelineno-77-57" name="__codelineno-77-57" href="#__codelineno-77-57"></a> <span class="k">if</span> <span class="n">_size</span> <span class="p">==</span> <span class="n">_capacity</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-58" name="__codelineno-77-58" href="#__codelineno-77-58"></a> <span class="n">extendCapacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-77-59" name="__codelineno-77-59" href="#__codelineno-77-59"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-60" name="__codelineno-77-60" href="#__codelineno-77-60"></a> <span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
|
||||
<a id="__codelineno-77-61" name="__codelineno-77-61" href="#__codelineno-77-61"></a> <span class="k">for</span> <span class="n">j</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">_size</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="n">index</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-77-62" name="__codelineno-77-62" href="#__codelineno-77-62"></a> <span class="n">arr</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="p">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-63" name="__codelineno-77-63" href="#__codelineno-77-63"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-64" name="__codelineno-77-64" href="#__codelineno-77-64"></a> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-65" name="__codelineno-77-65" href="#__codelineno-77-65"></a> <span class="c1">// 更新元素数量</span>
|
||||
<a id="__codelineno-77-66" name="__codelineno-77-66" href="#__codelineno-77-66"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-77-67" name="__codelineno-77-67" href="#__codelineno-77-67"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-68" name="__codelineno-77-68" href="#__codelineno-77-68"></a>
|
||||
<a id="__codelineno-77-69" name="__codelineno-77-69" href="#__codelineno-77-69"></a> <span class="cm">/* 删除元素 */</span>
|
||||
<a id="__codelineno-77-70" name="__codelineno-77-70" href="#__codelineno-77-70"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-77-71" name="__codelineno-77-71" href="#__codelineno-77-71"></a> <span class="kd">func</span> <span class="nf">remove</span><span class="p">(</span><span class="n">index</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-77-72" name="__codelineno-77-72" href="#__codelineno-77-72"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">_size</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-73" name="__codelineno-77-73" href="#__codelineno-77-73"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-74" name="__codelineno-77-74" href="#__codelineno-77-74"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-75" name="__codelineno-77-75" href="#__codelineno-77-75"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-76" name="__codelineno-77-76" href="#__codelineno-77-76"></a> <span class="c1">// 将将索引 index 之后的元素都向前移动一位</span>
|
||||
<a id="__codelineno-77-77" name="__codelineno-77-77" href="#__codelineno-77-77"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="n">index</span> <span class="p">..</span><span class="o"><</span> <span class="p">(</span><span class="n">_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-78" name="__codelineno-77-78" href="#__codelineno-77-78"></a> <span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-79" name="__codelineno-77-79" href="#__codelineno-77-79"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-80" name="__codelineno-77-80" href="#__codelineno-77-80"></a> <span class="c1">// 更新元素数量</span>
|
||||
<a id="__codelineno-77-81" name="__codelineno-77-81" href="#__codelineno-77-81"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-77-82" name="__codelineno-77-82" href="#__codelineno-77-82"></a> <span class="c1">// 返回被删除的元素</span>
|
||||
<a id="__codelineno-77-83" name="__codelineno-77-83" href="#__codelineno-77-83"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-84" name="__codelineno-77-84" href="#__codelineno-77-84"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-85" name="__codelineno-77-85" href="#__codelineno-77-85"></a>
|
||||
<a id="__codelineno-77-86" name="__codelineno-77-86" href="#__codelineno-77-86"></a> <span class="cm">/* 列表扩容 */</span>
|
||||
<a id="__codelineno-77-87" name="__codelineno-77-87" href="#__codelineno-77-87"></a> <span class="kd">func</span> <span class="nf">extendCapacity</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-88" name="__codelineno-77-88" href="#__codelineno-77-88"></a> <span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组复制到新数组</span>
|
||||
<a id="__codelineno-77-89" name="__codelineno-77-89" href="#__codelineno-77-89"></a> <span class="n">arr</span> <span class="p">=</span> <span class="n">arr</span> <span class="o">+</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">_capacity</span> <span class="o">*</span> <span class="p">(</span><span class="n">extendRatio</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<a id="__codelineno-77-90" name="__codelineno-77-90" href="#__codelineno-77-90"></a> <span class="c1">// 更新列表容量</span>
|
||||
<a id="__codelineno-77-91" name="__codelineno-77-91" href="#__codelineno-77-91"></a> <span class="n">_capacity</span> <span class="p">=</span> <span class="n">arr</span><span class="p">.</span><span class="bp">count</span>
|
||||
<a id="__codelineno-77-92" name="__codelineno-77-92" href="#__codelineno-77-92"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-93" name="__codelineno-77-93" href="#__codelineno-77-93"></a>
|
||||
<a id="__codelineno-77-94" name="__codelineno-77-94" href="#__codelineno-77-94"></a> <span class="cm">/* 将列表转换为数组 */</span>
|
||||
<a id="__codelineno-77-95" name="__codelineno-77-95" href="#__codelineno-77-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-77-96" name="__codelineno-77-96" href="#__codelineno-77-96"></a> <span class="kd">var</span> <span class="nv">arr</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-77-97" name="__codelineno-77-97" href="#__codelineno-77-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-77-98" name="__codelineno-77-98" href="#__codelineno-77-98"></a> <span class="n">arr</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-77-99" name="__codelineno-77-99" href="#__codelineno-77-99"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-100" name="__codelineno-77-100" href="#__codelineno-77-100"></a> <span class="k">return</span> <span class="n">arr</span>
|
||||
<a id="__codelineno-77-101" name="__codelineno-77-101" href="#__codelineno-77-101"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-102" name="__codelineno-77-102" href="#__codelineno-77-102"></a><span class="p">}</span>
|
||||
<a id="__codelineno-77-10" name="__codelineno-77-10" href="#__codelineno-77-10"></a> <span class="n">_capacity</span> <span class="p">=</span> <span class="mi">10</span>
|
||||
<a id="__codelineno-77-11" name="__codelineno-77-11" href="#__codelineno-77-11"></a> <span class="n">_size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-77-12" name="__codelineno-77-12" href="#__codelineno-77-12"></a> <span class="n">extendRatio</span> <span class="p">=</span> <span class="mi">2</span>
|
||||
<a id="__codelineno-77-13" name="__codelineno-77-13" href="#__codelineno-77-13"></a> <span class="n">arr</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">_capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-14" name="__codelineno-77-14" href="#__codelineno-77-14"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-15" name="__codelineno-77-15" href="#__codelineno-77-15"></a>
|
||||
<a id="__codelineno-77-16" name="__codelineno-77-16" href="#__codelineno-77-16"></a> <span class="cm">/* 获取列表长度(当前元素数量)*/</span>
|
||||
<a id="__codelineno-77-17" name="__codelineno-77-17" href="#__codelineno-77-17"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-18" name="__codelineno-77-18" href="#__codelineno-77-18"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-77-19" name="__codelineno-77-19" href="#__codelineno-77-19"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-20" name="__codelineno-77-20" href="#__codelineno-77-20"></a>
|
||||
<a id="__codelineno-77-21" name="__codelineno-77-21" href="#__codelineno-77-21"></a> <span class="cm">/* 获取列表容量 */</span>
|
||||
<a id="__codelineno-77-22" name="__codelineno-77-22" href="#__codelineno-77-22"></a> <span class="kd">func</span> <span class="nf">capacity</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-23" name="__codelineno-77-23" href="#__codelineno-77-23"></a> <span class="n">_capacity</span>
|
||||
<a id="__codelineno-77-24" name="__codelineno-77-24" href="#__codelineno-77-24"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-25" name="__codelineno-77-25" href="#__codelineno-77-25"></a>
|
||||
<a id="__codelineno-77-26" name="__codelineno-77-26" href="#__codelineno-77-26"></a> <span class="cm">/* 访问元素 */</span>
|
||||
<a id="__codelineno-77-27" name="__codelineno-77-27" href="#__codelineno-77-27"></a> <span class="kd">func</span> <span class="nf">get</span><span class="p">(</span><span class="n">index</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-77-28" name="__codelineno-77-28" href="#__codelineno-77-28"></a> <span class="c1">// 索引如果越界则抛出错误,下同</span>
|
||||
<a id="__codelineno-77-29" name="__codelineno-77-29" href="#__codelineno-77-29"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">size</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-30" name="__codelineno-77-30" href="#__codelineno-77-30"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-31" name="__codelineno-77-31" href="#__codelineno-77-31"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-32" name="__codelineno-77-32" href="#__codelineno-77-32"></a> <span class="k">return</span> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-33" name="__codelineno-77-33" href="#__codelineno-77-33"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-34" name="__codelineno-77-34" href="#__codelineno-77-34"></a>
|
||||
<a id="__codelineno-77-35" name="__codelineno-77-35" href="#__codelineno-77-35"></a> <span class="cm">/* 更新元素 */</span>
|
||||
<a id="__codelineno-77-36" name="__codelineno-77-36" href="#__codelineno-77-36"></a> <span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-37" name="__codelineno-77-37" href="#__codelineno-77-37"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">size</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-38" name="__codelineno-77-38" href="#__codelineno-77-38"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-39" name="__codelineno-77-39" href="#__codelineno-77-39"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-40" name="__codelineno-77-40" href="#__codelineno-77-40"></a> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-41" name="__codelineno-77-41" href="#__codelineno-77-41"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-42" name="__codelineno-77-42" href="#__codelineno-77-42"></a>
|
||||
<a id="__codelineno-77-43" name="__codelineno-77-43" href="#__codelineno-77-43"></a> <span class="cm">/* 在尾部添加元素 */</span>
|
||||
<a id="__codelineno-77-44" name="__codelineno-77-44" href="#__codelineno-77-44"></a> <span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-45" name="__codelineno-77-45" href="#__codelineno-77-45"></a> <span class="c1">// 元素数量超出容量时,触发扩容机制</span>
|
||||
<a id="__codelineno-77-46" name="__codelineno-77-46" href="#__codelineno-77-46"></a> <span class="k">if</span> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="n">capacity</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-47" name="__codelineno-77-47" href="#__codelineno-77-47"></a> <span class="n">extendCapacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-77-48" name="__codelineno-77-48" href="#__codelineno-77-48"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-49" name="__codelineno-77-49" href="#__codelineno-77-49"></a> <span class="n">arr</span><span class="p">[</span><span class="n">size</span><span class="p">()]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-50" name="__codelineno-77-50" href="#__codelineno-77-50"></a> <span class="c1">// 更新元素数量</span>
|
||||
<a id="__codelineno-77-51" name="__codelineno-77-51" href="#__codelineno-77-51"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-77-52" name="__codelineno-77-52" href="#__codelineno-77-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-53" name="__codelineno-77-53" href="#__codelineno-77-53"></a>
|
||||
<a id="__codelineno-77-54" name="__codelineno-77-54" href="#__codelineno-77-54"></a> <span class="cm">/* 在中间插入元素 */</span>
|
||||
<a id="__codelineno-77-55" name="__codelineno-77-55" href="#__codelineno-77-55"></a> <span class="kd">func</span> <span class="nf">insert</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-56" name="__codelineno-77-56" href="#__codelineno-77-56"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">size</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-57" name="__codelineno-77-57" href="#__codelineno-77-57"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-58" name="__codelineno-77-58" href="#__codelineno-77-58"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-59" name="__codelineno-77-59" href="#__codelineno-77-59"></a> <span class="c1">// 元素数量超出容量时,触发扩容机制</span>
|
||||
<a id="__codelineno-77-60" name="__codelineno-77-60" href="#__codelineno-77-60"></a> <span class="k">if</span> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="n">capacity</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-61" name="__codelineno-77-61" href="#__codelineno-77-61"></a> <span class="n">extendCapacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-77-62" name="__codelineno-77-62" href="#__codelineno-77-62"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-63" name="__codelineno-77-63" href="#__codelineno-77-63"></a> <span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
|
||||
<a id="__codelineno-77-64" name="__codelineno-77-64" href="#__codelineno-77-64"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="p">(</span><span class="n">index</span> <span class="p">..</span><span class="o"><</span> <span class="n">size</span><span class="p">()).</span><span class="n">reversed</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-65" name="__codelineno-77-65" href="#__codelineno-77-65"></a> <span class="n">arr</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="p">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-66" name="__codelineno-77-66" href="#__codelineno-77-66"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-67" name="__codelineno-77-67" href="#__codelineno-77-67"></a> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-68" name="__codelineno-77-68" href="#__codelineno-77-68"></a> <span class="c1">// 更新元素数量</span>
|
||||
<a id="__codelineno-77-69" name="__codelineno-77-69" href="#__codelineno-77-69"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-77-70" name="__codelineno-77-70" href="#__codelineno-77-70"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-71" name="__codelineno-77-71" href="#__codelineno-77-71"></a>
|
||||
<a id="__codelineno-77-72" name="__codelineno-77-72" href="#__codelineno-77-72"></a> <span class="cm">/* 删除元素 */</span>
|
||||
<a id="__codelineno-77-73" name="__codelineno-77-73" href="#__codelineno-77-73"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-77-74" name="__codelineno-77-74" href="#__codelineno-77-74"></a> <span class="kd">func</span> <span class="nf">remove</span><span class="p">(</span><span class="n">index</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-77-75" name="__codelineno-77-75" href="#__codelineno-77-75"></a> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">>=</span> <span class="n">size</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-76" name="__codelineno-77-76" href="#__codelineno-77-76"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"索引越界"</span><span class="p">)</span>
|
||||
<a id="__codelineno-77-77" name="__codelineno-77-77" href="#__codelineno-77-77"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-78" name="__codelineno-77-78" href="#__codelineno-77-78"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-79" name="__codelineno-77-79" href="#__codelineno-77-79"></a> <span class="c1">// 将将索引 index 之后的元素都向前移动一位</span>
|
||||
<a id="__codelineno-77-80" name="__codelineno-77-80" href="#__codelineno-77-80"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="n">index</span> <span class="p">..</span><span class="o"><</span> <span class="p">(</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-81" name="__codelineno-77-81" href="#__codelineno-77-81"></a> <span class="n">arr</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="n">arr</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<a id="__codelineno-77-82" name="__codelineno-77-82" href="#__codelineno-77-82"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-83" name="__codelineno-77-83" href="#__codelineno-77-83"></a> <span class="c1">// 更新元素数量</span>
|
||||
<a id="__codelineno-77-84" name="__codelineno-77-84" href="#__codelineno-77-84"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-77-85" name="__codelineno-77-85" href="#__codelineno-77-85"></a> <span class="c1">// 返回被删除的元素</span>
|
||||
<a id="__codelineno-77-86" name="__codelineno-77-86" href="#__codelineno-77-86"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-77-87" name="__codelineno-77-87" href="#__codelineno-77-87"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-88" name="__codelineno-77-88" href="#__codelineno-77-88"></a>
|
||||
<a id="__codelineno-77-89" name="__codelineno-77-89" href="#__codelineno-77-89"></a> <span class="cm">/* 列表扩容 */</span>
|
||||
<a id="__codelineno-77-90" name="__codelineno-77-90" href="#__codelineno-77-90"></a> <span class="kd">func</span> <span class="nf">extendCapacity</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-77-91" name="__codelineno-77-91" href="#__codelineno-77-91"></a> <span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组复制到新数组</span>
|
||||
<a id="__codelineno-77-92" name="__codelineno-77-92" href="#__codelineno-77-92"></a> <span class="n">arr</span> <span class="p">=</span> <span class="n">arr</span> <span class="o">+</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">capacity</span><span class="p">()</span> <span class="o">*</span> <span class="p">(</span><span class="n">extendRatio</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<a id="__codelineno-77-93" name="__codelineno-77-93" href="#__codelineno-77-93"></a> <span class="c1">// 更新列表容量</span>
|
||||
<a id="__codelineno-77-94" name="__codelineno-77-94" href="#__codelineno-77-94"></a> <span class="n">_capacity</span> <span class="p">=</span> <span class="n">arr</span><span class="p">.</span><span class="bp">count</span>
|
||||
<a id="__codelineno-77-95" name="__codelineno-77-95" href="#__codelineno-77-95"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-96" name="__codelineno-77-96" href="#__codelineno-77-96"></a>
|
||||
<a id="__codelineno-77-97" name="__codelineno-77-97" href="#__codelineno-77-97"></a> <span class="cm">/* 将列表转换为数组 */</span>
|
||||
<a id="__codelineno-77-98" name="__codelineno-77-98" href="#__codelineno-77-98"></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-77-99" name="__codelineno-77-99" href="#__codelineno-77-99"></a> <span class="nb">Array</span><span class="p">(</span><span class="n">arr</span><span class="p">.</span><span class="kr">prefix</span><span class="p">(</span><span class="n">size</span><span class="p">()))</span>
|
||||
<a id="__codelineno-77-100" name="__codelineno-77-100" href="#__codelineno-77-100"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-77-101" name="__codelineno-77-101" href="#__codelineno-77-101"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -3171,7 +3171,7 @@
|
||||
<a id="__codelineno-89-4" name="__codelineno-89-4" href="#__codelineno-89-4"></a> <span class="kd">var</span> <span class="nv">stack</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-89-5" name="__codelineno-89-5" href="#__codelineno-89-5"></a> <span class="kd">var</span> <span class="nv">res</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-89-6" name="__codelineno-89-6" href="#__codelineno-89-6"></a> <span class="c1">// 递:递归调用</span>
|
||||
<a id="__codelineno-89-7" name="__codelineno-89-7" href="#__codelineno-89-7"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="bp">stride</span><span class="p">(</span><span class="n">from</span><span class="p">:</span> <span class="n">n</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="n">by</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-89-7" name="__codelineno-89-7" href="#__codelineno-89-7"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="p">(</span><span class="mi">1</span> <span class="p">...</span> <span class="n">n</span><span class="p">).</span><span class="n">reversed</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-89-8" name="__codelineno-89-8" href="#__codelineno-89-8"></a> <span class="c1">// 通过“入栈操作”模拟“递”</span>
|
||||
<a id="__codelineno-89-9" name="__codelineno-89-9" href="#__codelineno-89-9"></a> <span class="n">stack</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<a id="__codelineno-89-10" name="__codelineno-89-10" href="#__codelineno-89-10"></a> <span class="p">}</span>
|
||||
|
||||
@@ -2083,7 +2083,7 @@
|
||||
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a>
|
||||
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a><span class="c1">// Time complexity of algorithm C: constant order</span>
|
||||
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a><span class="kd">func</span> <span class="nf">algorithmC</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>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></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="mi">1000000</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></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="mi">1_000_000</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="bp">print</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a><span class="p">}</span>
|
||||
@@ -3387,7 +3387,7 @@ O(1) < O(\log n) < O(n) < O(n \log n) < O(n^2) < O(2^n) < O(n!
|
||||
<a id="__codelineno-101-2" name="__codelineno-101-2" href="#__codelineno-101-2"></a><span class="kd">func</span> <span class="nf">bubbleSort</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="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-101-3" name="__codelineno-101-3" href="#__codelineno-101-3"></a> <span class="kd">var</span> <span class="nv">count</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 计数器</span>
|
||||
<a id="__codelineno-101-4" name="__codelineno-101-4" href="#__codelineno-101-4"></a> <span class="c1">// 外循环:未排序区间为 [0, i]</span>
|
||||
<a id="__codelineno-101-5" name="__codelineno-101-5" href="#__codelineno-101-5"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="bp">stride</span><span class="p">(</span><span class="n">from</span><span class="p">:</span> <span class="n">nums</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">to</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="n">by</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-101-5" name="__codelineno-101-5" href="#__codelineno-101-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><span class="bp">dropFirst</span><span class="p">().</span><span class="n">reversed</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-101-6" name="__codelineno-101-6" href="#__codelineno-101-6"></a> <span class="c1">// 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端</span>
|
||||
<a id="__codelineno-101-7" name="__codelineno-101-7" href="#__codelineno-101-7"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="mi">0</span> <span class="p">..</span><span class="o"><</span> <span class="n">i</span> <span class="p">{</span>
|
||||
<a id="__codelineno-101-8" name="__codelineno-101-8" href="#__codelineno-101-8"></a> <span class="k">if</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</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="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="p">{</span>
|
||||
|
||||
@@ -1643,10 +1643,10 @@
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1">// Using various basic data types to initialize arrays</span>
|
||||
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="kd">let</span> <span class="nv">numbers</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="nb">Int</span><span class="p">(),</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="kd">let</span> <span class="nv">decimals</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="nb">Double</span><span class="p">(),</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="kd">let</span> <span class="nv">characters</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="nb">Character</span><span class="p">(</span><span class="s">"a"</span><span class="p">),</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="kd">let</span> <span class="nv">bools</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="nb">Bool</span><span class="p">(),</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="kd">let</span> <span class="nv">numbers</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="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="kd">let</span> <span class="nv">decimals</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="mf">0.0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="kd">let</span> <span class="nv">characters</span><span class="p">:</span> <span class="p">[</span><span class="nb">Character</span><span class="p">]</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="s">"a"</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="kd">let</span> <span class="nv">bools</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="kc">false</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">5</span><span class="p">)</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -2246,7 +2246,7 @@
|
||||
<a id="__codelineno-5-22" name="__codelineno-5-22" href="#__codelineno-5-22"></a>
|
||||
<a id="__codelineno-5-23" name="__codelineno-5-23" href="#__codelineno-5-23"></a> <span class="cm">/* 负载因子 */</span>
|
||||
<a id="__codelineno-5-24" name="__codelineno-5-24" href="#__codelineno-5-24"></a> <span class="kd">func</span> <span class="nf">loadFactor</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Double</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-25" name="__codelineno-5-25" href="#__codelineno-5-25"></a> <span class="nb">Double</span><span class="p">(</span><span class="n">size</span> <span class="o">/</span> <span class="n">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-25" name="__codelineno-5-25" href="#__codelineno-5-25"></a> <span class="nb">Double</span><span class="p">(</span><span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="nb">Double</span><span class="p">(</span><span class="n">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-26" name="__codelineno-5-26" href="#__codelineno-5-26"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-27" name="__codelineno-5-27" href="#__codelineno-5-27"></a>
|
||||
<a id="__codelineno-5-28" name="__codelineno-5-28" href="#__codelineno-5-28"></a> <span class="cm">/* 查询操作 */</span>
|
||||
@@ -2292,35 +2292,36 @@
|
||||
<a id="__codelineno-5-68" name="__codelineno-5-68" href="#__codelineno-5-68"></a> <span class="k">for</span> <span class="p">(</span><span class="n">pairIndex</span><span class="p">,</span> <span class="n">pair</span><span class="p">)</span> <span class="k">in</span> <span class="n">bucket</span><span class="p">.</span><span class="n">enumerated</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-69" name="__codelineno-5-69" href="#__codelineno-5-69"></a> <span class="k">if</span> <span class="n">pair</span><span class="p">.</span><span class="n">key</span> <span class="p">==</span> <span class="n">key</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-70" name="__codelineno-5-70" href="#__codelineno-5-70"></a> <span class="n">buckets</span><span class="p">[</span><span class="n">index</span><span class="p">].</span><span class="n">remove</span><span class="p">(</span><span class="n">at</span><span class="p">:</span> <span class="n">pairIndex</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-71" name="__codelineno-5-71" href="#__codelineno-5-71"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-72" name="__codelineno-5-72" href="#__codelineno-5-72"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-73" name="__codelineno-5-73" href="#__codelineno-5-73"></a> <span class="n">size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-5-74" name="__codelineno-5-74" href="#__codelineno-5-74"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-75" name="__codelineno-5-75" href="#__codelineno-5-75"></a>
|
||||
<a id="__codelineno-5-76" name="__codelineno-5-76" href="#__codelineno-5-76"></a> <span class="cm">/* 扩容哈希表 */</span>
|
||||
<a id="__codelineno-5-77" name="__codelineno-5-77" href="#__codelineno-5-77"></a> <span class="kd">func</span> <span class="nf">extend</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-78" name="__codelineno-5-78" href="#__codelineno-5-78"></a> <span class="c1">// 暂存原哈希表</span>
|
||||
<a id="__codelineno-5-79" name="__codelineno-5-79" href="#__codelineno-5-79"></a> <span class="kd">let</span> <span class="nv">bucketsTmp</span> <span class="p">=</span> <span class="n">buckets</span>
|
||||
<a id="__codelineno-5-80" name="__codelineno-5-80" href="#__codelineno-5-80"></a> <span class="c1">// 初始化扩容后的新哈希表</span>
|
||||
<a id="__codelineno-5-81" name="__codelineno-5-81" href="#__codelineno-5-81"></a> <span class="n">capacity</span> <span class="o">*=</span> <span class="n">extendRatio</span>
|
||||
<a id="__codelineno-5-82" name="__codelineno-5-82" href="#__codelineno-5-82"></a> <span class="n">buckets</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="p">[],</span> <span class="bp">count</span><span class="p">:</span> <span class="n">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-83" name="__codelineno-5-83" href="#__codelineno-5-83"></a> <span class="n">size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-5-84" name="__codelineno-5-84" href="#__codelineno-5-84"></a> <span class="c1">// 将键值对从原哈希表搬运至新哈希表</span>
|
||||
<a id="__codelineno-5-85" name="__codelineno-5-85" href="#__codelineno-5-85"></a> <span class="k">for</span> <span class="n">bucket</span> <span class="k">in</span> <span class="n">bucketsTmp</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-86" name="__codelineno-5-86" href="#__codelineno-5-86"></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-5-87" name="__codelineno-5-87" href="#__codelineno-5-87"></a> <span class="n">put</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">pair</span><span class="p">.</span><span class="n">key</span><span class="p">,</span> <span class="n">val</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-5-88" name="__codelineno-5-88" href="#__codelineno-5-88"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-89" name="__codelineno-5-89" href="#__codelineno-5-89"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-90" name="__codelineno-5-90" href="#__codelineno-5-90"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-91" name="__codelineno-5-91" href="#__codelineno-5-91"></a>
|
||||
<a id="__codelineno-5-92" name="__codelineno-5-92" href="#__codelineno-5-92"></a> <span class="cm">/* 打印哈希表 */</span>
|
||||
<a id="__codelineno-5-93" name="__codelineno-5-93" href="#__codelineno-5-93"></a> <span class="kd">func</span> <span class="nf">print</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-94" name="__codelineno-5-94" href="#__codelineno-5-94"></a> <span class="k">for</span> <span class="n">bucket</span> <span class="k">in</span> <span class="n">buckets</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-95" name="__codelineno-5-95" href="#__codelineno-5-95"></a> <span class="kd">let</span> <span class="nv">res</span> <span class="p">=</span> <span class="n">bucket</span><span class="p">.</span><span class="bp">map</span> <span class="p">{</span> <span class="s">"</span><span class="si">\(</span><span class="nv">$0</span><span class="p">.</span><span class="n">key</span><span class="si">)</span><span class="s"> -> </span><span class="si">\(</span><span class="nv">$0</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-5-96" name="__codelineno-5-96" href="#__codelineno-5-96"></a> <span class="n">Swift</span><span class="p">.</span><span class="bp">print</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-97" name="__codelineno-5-97" href="#__codelineno-5-97"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-98" name="__codelineno-5-98" href="#__codelineno-5-98"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-99" name="__codelineno-5-99" href="#__codelineno-5-99"></a><span class="p">}</span>
|
||||
<a id="__codelineno-5-71" name="__codelineno-5-71" href="#__codelineno-5-71"></a> <span class="n">size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-5-72" name="__codelineno-5-72" href="#__codelineno-5-72"></a> <span class="k">break</span>
|
||||
<a id="__codelineno-5-73" name="__codelineno-5-73" href="#__codelineno-5-73"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-74" name="__codelineno-5-74" href="#__codelineno-5-74"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-75" name="__codelineno-5-75" href="#__codelineno-5-75"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-76" name="__codelineno-5-76" href="#__codelineno-5-76"></a>
|
||||
<a id="__codelineno-5-77" name="__codelineno-5-77" href="#__codelineno-5-77"></a> <span class="cm">/* 扩容哈希表 */</span>
|
||||
<a id="__codelineno-5-78" name="__codelineno-5-78" href="#__codelineno-5-78"></a> <span class="kd">func</span> <span class="nf">extend</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-79" name="__codelineno-5-79" href="#__codelineno-5-79"></a> <span class="c1">// 暂存原哈希表</span>
|
||||
<a id="__codelineno-5-80" name="__codelineno-5-80" href="#__codelineno-5-80"></a> <span class="kd">let</span> <span class="nv">bucketsTmp</span> <span class="p">=</span> <span class="n">buckets</span>
|
||||
<a id="__codelineno-5-81" name="__codelineno-5-81" href="#__codelineno-5-81"></a> <span class="c1">// 初始化扩容后的新哈希表</span>
|
||||
<a id="__codelineno-5-82" name="__codelineno-5-82" href="#__codelineno-5-82"></a> <span class="n">capacity</span> <span class="o">*=</span> <span class="n">extendRatio</span>
|
||||
<a id="__codelineno-5-83" name="__codelineno-5-83" href="#__codelineno-5-83"></a> <span class="n">buckets</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="p">[],</span> <span class="bp">count</span><span class="p">:</span> <span class="n">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-84" name="__codelineno-5-84" href="#__codelineno-5-84"></a> <span class="n">size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-5-85" name="__codelineno-5-85" href="#__codelineno-5-85"></a> <span class="c1">// 将键值对从原哈希表搬运至新哈希表</span>
|
||||
<a id="__codelineno-5-86" name="__codelineno-5-86" href="#__codelineno-5-86"></a> <span class="k">for</span> <span class="n">bucket</span> <span class="k">in</span> <span class="n">bucketsTmp</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-87" name="__codelineno-5-87" href="#__codelineno-5-87"></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-5-88" name="__codelineno-5-88" href="#__codelineno-5-88"></a> <span class="n">put</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">pair</span><span class="p">.</span><span class="n">key</span><span class="p">,</span> <span class="n">val</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-5-89" name="__codelineno-5-89" href="#__codelineno-5-89"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-90" name="__codelineno-5-90" href="#__codelineno-5-90"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-91" name="__codelineno-5-91" href="#__codelineno-5-91"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-92" name="__codelineno-5-92" href="#__codelineno-5-92"></a>
|
||||
<a id="__codelineno-5-93" name="__codelineno-5-93" href="#__codelineno-5-93"></a> <span class="cm">/* 打印哈希表 */</span>
|
||||
<a id="__codelineno-5-94" name="__codelineno-5-94" href="#__codelineno-5-94"></a> <span class="kd">func</span> <span class="nf">print</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-95" name="__codelineno-5-95" href="#__codelineno-5-95"></a> <span class="k">for</span> <span class="n">bucket</span> <span class="k">in</span> <span class="n">buckets</span> <span class="p">{</span>
|
||||
<a id="__codelineno-5-96" name="__codelineno-5-96" href="#__codelineno-5-96"></a> <span class="kd">let</span> <span class="nv">res</span> <span class="p">=</span> <span class="n">bucket</span><span class="p">.</span><span class="bp">map</span> <span class="p">{</span> <span class="s">"</span><span class="si">\(</span><span class="nv">$0</span><span class="p">.</span><span class="n">key</span><span class="si">)</span><span class="s"> -> </span><span class="si">\(</span><span class="nv">$0</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-5-97" name="__codelineno-5-97" href="#__codelineno-5-97"></a> <span class="n">Swift</span><span class="p">.</span><span class="bp">print</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<a id="__codelineno-5-98" name="__codelineno-5-98" href="#__codelineno-5-98"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-99" name="__codelineno-5-99" href="#__codelineno-5-99"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-5-100" name="__codelineno-5-100" href="#__codelineno-5-100"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@@ -3598,7 +3599,7 @@
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a>
|
||||
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a> <span class="cm">/* 负载因子 */</span>
|
||||
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a> <span class="kd">func</span> <span class="nf">loadFactor</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Double</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> <span class="nb">Double</span><span class="p">(</span><span class="n">size</span> <span class="o">/</span> <span class="n">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> <span class="nb">Double</span><span class="p">(</span><span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="nb">Double</span><span class="p">(</span><span class="n">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a>
|
||||
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a> <span class="cm">/* 搜索 key 对应的桶索引 */</span>
|
||||
|
||||
@@ -2516,82 +2516,62 @@
|
||||
<a id="__codelineno-30-15" name="__codelineno-30-15" href="#__codelineno-30-15"></a>
|
||||
<a id="__codelineno-30-16" name="__codelineno-30-16" href="#__codelineno-30-16"></a><span class="cm">/* 基于数组实现的哈希表 */</span>
|
||||
<a id="__codelineno-30-17" name="__codelineno-30-17" href="#__codelineno-30-17"></a><span class="kd">class</span> <span class="nc">ArrayHashMap</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-18" name="__codelineno-30-18" href="#__codelineno-30-18"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">buckets</span><span class="p">:</span> <span class="p">[</span><span class="n">Pair</span><span class="p">?]</span> <span class="p">=</span> <span class="p">[]</span>
|
||||
<a id="__codelineno-30-18" name="__codelineno-30-18" href="#__codelineno-30-18"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">buckets</span><span class="p">:</span> <span class="p">[</span><span class="n">Pair</span><span class="p">?]</span>
|
||||
<a id="__codelineno-30-19" name="__codelineno-30-19" href="#__codelineno-30-19"></a>
|
||||
<a id="__codelineno-30-20" name="__codelineno-30-20" href="#__codelineno-30-20"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-21" name="__codelineno-30-21" href="#__codelineno-30-21"></a> <span class="c1">// 初始化数组,包含 100 个桶</span>
|
||||
<a id="__codelineno-30-22" name="__codelineno-30-22" href="#__codelineno-30-22"></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="mi">100</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-23" name="__codelineno-30-23" href="#__codelineno-30-23"></a> <span class="n">buckets</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="kc">nil</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-24" name="__codelineno-30-24" href="#__codelineno-30-24"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-25" name="__codelineno-30-25" href="#__codelineno-30-25"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-26" name="__codelineno-30-26" href="#__codelineno-30-26"></a>
|
||||
<a id="__codelineno-30-27" name="__codelineno-30-27" href="#__codelineno-30-27"></a> <span class="cm">/* 哈希函数 */</span>
|
||||
<a id="__codelineno-30-28" name="__codelineno-30-28" href="#__codelineno-30-28"></a> <span class="kd">private</span> <span class="kd">func</span> <span class="nf">hashFunc</span><span class="p">(</span><span class="n">key</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-30-29" name="__codelineno-30-29" href="#__codelineno-30-29"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">key</span> <span class="o">%</span> <span class="mi">100</span>
|
||||
<a id="__codelineno-30-30" name="__codelineno-30-30" href="#__codelineno-30-30"></a> <span class="k">return</span> <span class="n">index</span>
|
||||
<a id="__codelineno-30-31" name="__codelineno-30-31" href="#__codelineno-30-31"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-32" name="__codelineno-30-32" href="#__codelineno-30-32"></a>
|
||||
<a id="__codelineno-30-33" name="__codelineno-30-33" href="#__codelineno-30-33"></a> <span class="cm">/* 查询操作 */</span>
|
||||
<a id="__codelineno-30-34" name="__codelineno-30-34" href="#__codelineno-30-34"></a> <span class="kd">func</span> <span class="nf">get</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="nb">Int</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-30-35" name="__codelineno-30-35" href="#__codelineno-30-35"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-36" name="__codelineno-30-36" href="#__codelineno-30-36"></a> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">buckets</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
|
||||
<a id="__codelineno-30-37" name="__codelineno-30-37" href="#__codelineno-30-37"></a> <span class="k">return</span> <span class="n">pair</span><span class="p">?.</span><span class="n">val</span>
|
||||
<a id="__codelineno-30-38" name="__codelineno-30-38" href="#__codelineno-30-38"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-39" name="__codelineno-30-39" href="#__codelineno-30-39"></a>
|
||||
<a id="__codelineno-30-40" name="__codelineno-30-40" href="#__codelineno-30-40"></a> <span class="cm">/* 添加操作 */</span>
|
||||
<a id="__codelineno-30-41" name="__codelineno-30-41" href="#__codelineno-30-41"></a> <span class="kd">func</span> <span class="nf">put</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">val</span><span class="p">:</span> <span class="nb">String</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-42" name="__codelineno-30-42" href="#__codelineno-30-42"></a> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">Pair</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">:</span> <span class="n">val</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-43" name="__codelineno-30-43" href="#__codelineno-30-43"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-44" name="__codelineno-30-44" href="#__codelineno-30-44"></a> <span class="n">buckets</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">pair</span>
|
||||
<a id="__codelineno-30-45" name="__codelineno-30-45" href="#__codelineno-30-45"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-46" name="__codelineno-30-46" href="#__codelineno-30-46"></a>
|
||||
<a id="__codelineno-30-47" name="__codelineno-30-47" href="#__codelineno-30-47"></a> <span class="cm">/* 删除操作 */</span>
|
||||
<a id="__codelineno-30-48" name="__codelineno-30-48" href="#__codelineno-30-48"></a> <span class="kd">func</span> <span class="nf">remove</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-49" name="__codelineno-30-49" href="#__codelineno-30-49"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-50" name="__codelineno-30-50" href="#__codelineno-30-50"></a> <span class="c1">// 置为 nil ,代表删除</span>
|
||||
<a id="__codelineno-30-51" name="__codelineno-30-51" href="#__codelineno-30-51"></a> <span class="n">buckets</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-30-52" name="__codelineno-30-52" href="#__codelineno-30-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-53" name="__codelineno-30-53" href="#__codelineno-30-53"></a>
|
||||
<a id="__codelineno-30-54" name="__codelineno-30-54" href="#__codelineno-30-54"></a> <span class="cm">/* 获取所有键值对 */</span>
|
||||
<a id="__codelineno-30-55" name="__codelineno-30-55" href="#__codelineno-30-55"></a> <span class="kd">func</span> <span class="nf">pairSet</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="n">Pair</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-56" name="__codelineno-30-56" href="#__codelineno-30-56"></a> <span class="kd">var</span> <span class="nv">pairSet</span><span class="p">:</span> <span class="p">[</span><span class="n">Pair</span><span class="p">]</span> <span class="p">=</span> <span class="p">[]</span>
|
||||
<a id="__codelineno-30-57" name="__codelineno-30-57" href="#__codelineno-30-57"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">buckets</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-58" name="__codelineno-30-58" href="#__codelineno-30-58"></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-30-59" name="__codelineno-30-59" href="#__codelineno-30-59"></a> <span class="n">pairSet</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-30-60" name="__codelineno-30-60" href="#__codelineno-30-60"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-61" name="__codelineno-30-61" href="#__codelineno-30-61"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-62" name="__codelineno-30-62" href="#__codelineno-30-62"></a> <span class="k">return</span> <span class="n">pairSet</span>
|
||||
<a id="__codelineno-30-63" name="__codelineno-30-63" href="#__codelineno-30-63"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-64" name="__codelineno-30-64" href="#__codelineno-30-64"></a>
|
||||
<a id="__codelineno-30-65" name="__codelineno-30-65" href="#__codelineno-30-65"></a> <span class="cm">/* 获取所有键 */</span>
|
||||
<a id="__codelineno-30-66" name="__codelineno-30-66" href="#__codelineno-30-66"></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-30-67" name="__codelineno-30-67" href="#__codelineno-30-67"></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-30-68" name="__codelineno-30-68" href="#__codelineno-30-68"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">buckets</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-69" name="__codelineno-30-69" href="#__codelineno-30-69"></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-30-70" name="__codelineno-30-70" href="#__codelineno-30-70"></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-30-71" name="__codelineno-30-71" href="#__codelineno-30-71"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-72" name="__codelineno-30-72" href="#__codelineno-30-72"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-73" name="__codelineno-30-73" href="#__codelineno-30-73"></a> <span class="k">return</span> <span class="n">keySet</span>
|
||||
<a id="__codelineno-30-74" name="__codelineno-30-74" href="#__codelineno-30-74"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-75" name="__codelineno-30-75" href="#__codelineno-30-75"></a>
|
||||
<a id="__codelineno-30-76" name="__codelineno-30-76" href="#__codelineno-30-76"></a> <span class="cm">/* 获取所有值 */</span>
|
||||
<a id="__codelineno-30-77" name="__codelineno-30-77" href="#__codelineno-30-77"></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-30-78" name="__codelineno-30-78" href="#__codelineno-30-78"></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-30-79" name="__codelineno-30-79" href="#__codelineno-30-79"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">buckets</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-80" name="__codelineno-30-80" href="#__codelineno-30-80"></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-30-81" name="__codelineno-30-81" href="#__codelineno-30-81"></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-30-82" name="__codelineno-30-82" href="#__codelineno-30-82"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-83" name="__codelineno-30-83" href="#__codelineno-30-83"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-84" name="__codelineno-30-84" href="#__codelineno-30-84"></a> <span class="k">return</span> <span class="n">valueSet</span>
|
||||
<a id="__codelineno-30-85" name="__codelineno-30-85" href="#__codelineno-30-85"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-86" name="__codelineno-30-86" href="#__codelineno-30-86"></a>
|
||||
<a id="__codelineno-30-87" name="__codelineno-30-87" href="#__codelineno-30-87"></a> <span class="cm">/* 打印哈希表 */</span>
|
||||
<a id="__codelineno-30-88" name="__codelineno-30-88" href="#__codelineno-30-88"></a> <span class="kd">func</span> <span class="nf">print</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-89" name="__codelineno-30-89" href="#__codelineno-30-89"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">pairSet</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-90" name="__codelineno-30-90" href="#__codelineno-30-90"></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">pair</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">pair</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-30-91" name="__codelineno-30-91" href="#__codelineno-30-91"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-92" name="__codelineno-30-92" href="#__codelineno-30-92"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-93" name="__codelineno-30-93" href="#__codelineno-30-93"></a><span class="p">}</span>
|
||||
<a id="__codelineno-30-22" name="__codelineno-30-22" href="#__codelineno-30-22"></a> <span class="n">buckets</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="kc">nil</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="mi">100</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-23" name="__codelineno-30-23" href="#__codelineno-30-23"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-24" name="__codelineno-30-24" href="#__codelineno-30-24"></a>
|
||||
<a id="__codelineno-30-25" name="__codelineno-30-25" href="#__codelineno-30-25"></a> <span class="cm">/* 哈希函数 */</span>
|
||||
<a id="__codelineno-30-26" name="__codelineno-30-26" href="#__codelineno-30-26"></a> <span class="kd">private</span> <span class="kd">func</span> <span class="nf">hashFunc</span><span class="p">(</span><span class="n">key</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-30-27" name="__codelineno-30-27" href="#__codelineno-30-27"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">key</span> <span class="o">%</span> <span class="mi">100</span>
|
||||
<a id="__codelineno-30-28" name="__codelineno-30-28" href="#__codelineno-30-28"></a> <span class="k">return</span> <span class="n">index</span>
|
||||
<a id="__codelineno-30-29" name="__codelineno-30-29" href="#__codelineno-30-29"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-30" name="__codelineno-30-30" href="#__codelineno-30-30"></a>
|
||||
<a id="__codelineno-30-31" name="__codelineno-30-31" href="#__codelineno-30-31"></a> <span class="cm">/* 查询操作 */</span>
|
||||
<a id="__codelineno-30-32" name="__codelineno-30-32" href="#__codelineno-30-32"></a> <span class="kd">func</span> <span class="nf">get</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="nb">Int</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-30-33" name="__codelineno-30-33" href="#__codelineno-30-33"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-34" name="__codelineno-30-34" href="#__codelineno-30-34"></a> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">buckets</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
|
||||
<a id="__codelineno-30-35" name="__codelineno-30-35" href="#__codelineno-30-35"></a> <span class="k">return</span> <span class="n">pair</span><span class="p">?.</span><span class="n">val</span>
|
||||
<a id="__codelineno-30-36" name="__codelineno-30-36" href="#__codelineno-30-36"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-37" name="__codelineno-30-37" href="#__codelineno-30-37"></a>
|
||||
<a id="__codelineno-30-38" name="__codelineno-30-38" href="#__codelineno-30-38"></a> <span class="cm">/* 添加操作 */</span>
|
||||
<a id="__codelineno-30-39" name="__codelineno-30-39" href="#__codelineno-30-39"></a> <span class="kd">func</span> <span class="nf">put</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">val</span><span class="p">:</span> <span class="nb">String</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-40" name="__codelineno-30-40" href="#__codelineno-30-40"></a> <span class="kd">let</span> <span class="nv">pair</span> <span class="p">=</span> <span class="n">Pair</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span><span class="p">:</span> <span class="n">val</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-41" name="__codelineno-30-41" href="#__codelineno-30-41"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-42" name="__codelineno-30-42" href="#__codelineno-30-42"></a> <span class="n">buckets</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">pair</span>
|
||||
<a id="__codelineno-30-43" name="__codelineno-30-43" href="#__codelineno-30-43"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-44" name="__codelineno-30-44" href="#__codelineno-30-44"></a>
|
||||
<a id="__codelineno-30-45" name="__codelineno-30-45" href="#__codelineno-30-45"></a> <span class="cm">/* 删除操作 */</span>
|
||||
<a id="__codelineno-30-46" name="__codelineno-30-46" href="#__codelineno-30-46"></a> <span class="kd">func</span> <span class="nf">remove</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-47" name="__codelineno-30-47" href="#__codelineno-30-47"></a> <span class="kd">let</span> <span class="nv">index</span> <span class="p">=</span> <span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span> <span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-30-48" name="__codelineno-30-48" href="#__codelineno-30-48"></a> <span class="c1">// 置为 nil ,代表删除</span>
|
||||
<a id="__codelineno-30-49" name="__codelineno-30-49" href="#__codelineno-30-49"></a> <span class="n">buckets</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-30-50" name="__codelineno-30-50" href="#__codelineno-30-50"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-51" name="__codelineno-30-51" href="#__codelineno-30-51"></a>
|
||||
<a id="__codelineno-30-52" name="__codelineno-30-52" href="#__codelineno-30-52"></a> <span class="cm">/* 获取所有键值对 */</span>
|
||||
<a id="__codelineno-30-53" name="__codelineno-30-53" href="#__codelineno-30-53"></a> <span class="kd">func</span> <span class="nf">pairSet</span><span class="p">()</span> <span class="p">-></span> <span class="p">[</span><span class="n">Pair</span><span class="p">]</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-54" name="__codelineno-30-54" href="#__codelineno-30-54"></a> <span class="n">buckets</span><span class="p">.</span><span class="n">compactMap</span> <span class="p">{</span> <span class="nv">$0</span> <span class="p">}</span>
|
||||
<a id="__codelineno-30-55" name="__codelineno-30-55" href="#__codelineno-30-55"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-56" name="__codelineno-30-56" href="#__codelineno-30-56"></a>
|
||||
<a id="__codelineno-30-57" name="__codelineno-30-57" href="#__codelineno-30-57"></a> <span class="cm">/* 获取所有键 */</span>
|
||||
<a id="__codelineno-30-58" name="__codelineno-30-58" href="#__codelineno-30-58"></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-30-59" name="__codelineno-30-59" href="#__codelineno-30-59"></a> <span class="n">buckets</span><span class="p">.</span><span class="n">compactMap</span> <span class="p">{</span> <span class="nv">$0</span><span class="p">?.</span><span class="n">key</span> <span class="p">}</span>
|
||||
<a id="__codelineno-30-60" name="__codelineno-30-60" href="#__codelineno-30-60"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-61" name="__codelineno-30-61" href="#__codelineno-30-61"></a>
|
||||
<a id="__codelineno-30-62" name="__codelineno-30-62" href="#__codelineno-30-62"></a> <span class="cm">/* 获取所有值 */</span>
|
||||
<a id="__codelineno-30-63" name="__codelineno-30-63" href="#__codelineno-30-63"></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-30-64" name="__codelineno-30-64" href="#__codelineno-30-64"></a> <span class="n">buckets</span><span class="p">.</span><span class="n">compactMap</span> <span class="p">{</span> <span class="nv">$0</span><span class="p">?.</span><span class="n">val</span> <span class="p">}</span>
|
||||
<a id="__codelineno-30-65" name="__codelineno-30-65" href="#__codelineno-30-65"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-66" name="__codelineno-30-66" href="#__codelineno-30-66"></a>
|
||||
<a id="__codelineno-30-67" name="__codelineno-30-67" href="#__codelineno-30-67"></a> <span class="cm">/* 打印哈希表 */</span>
|
||||
<a id="__codelineno-30-68" name="__codelineno-30-68" href="#__codelineno-30-68"></a> <span class="kd">func</span> <span class="nf">print</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-69" name="__codelineno-30-69" href="#__codelineno-30-69"></a> <span class="k">for</span> <span class="n">pair</span> <span class="k">in</span> <span class="n">pairSet</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-30-70" name="__codelineno-30-70" href="#__codelineno-30-70"></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">pair</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">pair</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-30-71" name="__codelineno-30-71" href="#__codelineno-30-71"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-72" name="__codelineno-30-72" href="#__codelineno-30-72"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-30-73" name="__codelineno-30-73" href="#__codelineno-30-73"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -2616,15 +2616,15 @@
|
||||
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a><span class="kd">class</span> <span class="nc">LinkedListDeque</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">front</span><span class="p">:</span> <span class="n">ListNode</span><span class="p">?</span> <span class="c1">// 头节点 front</span>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">rear</span><span class="p">:</span> <span class="n">ListNode</span><span class="p">?</span> <span class="c1">// 尾节点 rear</span>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">queSize</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 双向队列的长度</span>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 双向队列的长度</span>
|
||||
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a>
|
||||
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a> <span class="n">queSize</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a> <span class="n">_size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a>
|
||||
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a> <span class="cm">/* 获取双向队列的长度 */</span>
|
||||
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> <span class="n">queSize</span>
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> <span class="cm">/* 判断双向队列是否为空 */</span>
|
||||
@@ -2654,7 +2654,7 @@
|
||||
<a id="__codelineno-17-51" name="__codelineno-17-51" href="#__codelineno-17-51"></a> <span class="n">node</span><span class="p">.</span><span class="n">prev</span> <span class="p">=</span> <span class="n">rear</span>
|
||||
<a id="__codelineno-17-52" name="__codelineno-17-52" href="#__codelineno-17-52"></a> <span class="n">rear</span> <span class="p">=</span> <span class="n">node</span> <span class="c1">// 更新尾节点</span>
|
||||
<a id="__codelineno-17-53" name="__codelineno-17-53" href="#__codelineno-17-53"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-54" name="__codelineno-17-54" href="#__codelineno-17-54"></a> <span class="n">queSize</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1">// 更新队列长度</span>
|
||||
<a id="__codelineno-17-54" name="__codelineno-17-54" href="#__codelineno-17-54"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span> <span class="c1">// 更新队列长度</span>
|
||||
<a id="__codelineno-17-55" name="__codelineno-17-55" href="#__codelineno-17-55"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-56" name="__codelineno-17-56" href="#__codelineno-17-56"></a>
|
||||
<a id="__codelineno-17-57" name="__codelineno-17-57" href="#__codelineno-17-57"></a> <span class="cm">/* 队首入队 */</span>
|
||||
@@ -2695,7 +2695,7 @@
|
||||
<a id="__codelineno-17-92" name="__codelineno-17-92" href="#__codelineno-17-92"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-93" name="__codelineno-17-93" href="#__codelineno-17-93"></a> <span class="n">rear</span> <span class="p">=</span> <span class="n">rPrev</span> <span class="c1">// 更新尾节点</span>
|
||||
<a id="__codelineno-17-94" name="__codelineno-17-94" href="#__codelineno-17-94"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-95" name="__codelineno-17-95" href="#__codelineno-17-95"></a> <span class="n">queSize</span> <span class="o">-=</span> <span class="mi">1</span> <span class="c1">// 更新队列长度</span>
|
||||
<a id="__codelineno-17-95" name="__codelineno-17-95" href="#__codelineno-17-95"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span> <span class="c1">// 更新队列长度</span>
|
||||
<a id="__codelineno-17-96" name="__codelineno-17-96" href="#__codelineno-17-96"></a> <span class="k">return</span> <span class="n">val</span>
|
||||
<a id="__codelineno-17-97" name="__codelineno-17-97" href="#__codelineno-17-97"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-98" name="__codelineno-17-98" href="#__codelineno-17-98"></a>
|
||||
@@ -2710,26 +2710,32 @@
|
||||
<a id="__codelineno-17-107" name="__codelineno-17-107" href="#__codelineno-17-107"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-108" name="__codelineno-17-108" href="#__codelineno-17-108"></a>
|
||||
<a id="__codelineno-17-109" name="__codelineno-17-109" href="#__codelineno-17-109"></a> <span class="cm">/* 访问队首元素 */</span>
|
||||
<a id="__codelineno-17-110" name="__codelineno-17-110" href="#__codelineno-17-110"></a> <span class="kd">func</span> <span class="nf">peekFirst</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-17-111" name="__codelineno-17-111" href="#__codelineno-17-111"></a> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">?</span> <span class="kc">nil</span> <span class="p">:</span> <span class="n">front</span><span class="p">?.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-112" name="__codelineno-17-112" href="#__codelineno-17-112"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-113" name="__codelineno-17-113" href="#__codelineno-17-113"></a>
|
||||
<a id="__codelineno-17-114" name="__codelineno-17-114" href="#__codelineno-17-114"></a> <span class="cm">/* 访问队尾元素 */</span>
|
||||
<a id="__codelineno-17-115" name="__codelineno-17-115" href="#__codelineno-17-115"></a> <span class="kd">func</span> <span class="nf">peekLast</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-17-116" name="__codelineno-17-116" href="#__codelineno-17-116"></a> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">?</span> <span class="kc">nil</span> <span class="p">:</span> <span class="n">rear</span><span class="p">?.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-117" name="__codelineno-17-117" href="#__codelineno-17-117"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-118" name="__codelineno-17-118" href="#__codelineno-17-118"></a>
|
||||
<a id="__codelineno-17-119" name="__codelineno-17-119" href="#__codelineno-17-119"></a> <span class="cm">/* 返回数组用于打印 */</span>
|
||||
<a id="__codelineno-17-120" name="__codelineno-17-120" href="#__codelineno-17-120"></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-17-121" name="__codelineno-17-121" href="#__codelineno-17-121"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">front</span>
|
||||
<a id="__codelineno-17-122" name="__codelineno-17-122" href="#__codelineno-17-122"></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-17-123" name="__codelineno-17-123" href="#__codelineno-17-123"></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-17-124" name="__codelineno-17-124" href="#__codelineno-17-124"></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-17-125" name="__codelineno-17-125" href="#__codelineno-17-125"></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-17-126" name="__codelineno-17-126" href="#__codelineno-17-126"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-127" name="__codelineno-17-127" href="#__codelineno-17-127"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-17-128" name="__codelineno-17-128" href="#__codelineno-17-128"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-129" name="__codelineno-17-129" href="#__codelineno-17-129"></a><span class="p">}</span>
|
||||
<a id="__codelineno-17-110" name="__codelineno-17-110" href="#__codelineno-17-110"></a> <span class="kd">func</span> <span class="nf">peekFirst</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-111" name="__codelineno-17-111" href="#__codelineno-17-111"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-112" name="__codelineno-17-112" href="#__codelineno-17-112"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"双向队列为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-113" name="__codelineno-17-113" href="#__codelineno-17-113"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-114" name="__codelineno-17-114" href="#__codelineno-17-114"></a> <span class="k">return</span> <span class="n">front</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-115" name="__codelineno-17-115" href="#__codelineno-17-115"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-116" name="__codelineno-17-116" href="#__codelineno-17-116"></a>
|
||||
<a id="__codelineno-17-117" name="__codelineno-17-117" href="#__codelineno-17-117"></a> <span class="cm">/* 访问队尾元素 */</span>
|
||||
<a id="__codelineno-17-118" name="__codelineno-17-118" href="#__codelineno-17-118"></a> <span class="kd">func</span> <span class="nf">peekLast</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-119" name="__codelineno-17-119" href="#__codelineno-17-119"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-120" name="__codelineno-17-120" href="#__codelineno-17-120"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"双向队列为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-121" name="__codelineno-17-121" href="#__codelineno-17-121"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-122" name="__codelineno-17-122" href="#__codelineno-17-122"></a> <span class="k">return</span> <span class="n">rear</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-123" name="__codelineno-17-123" href="#__codelineno-17-123"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-124" name="__codelineno-17-124" href="#__codelineno-17-124"></a>
|
||||
<a id="__codelineno-17-125" name="__codelineno-17-125" href="#__codelineno-17-125"></a> <span class="cm">/* 返回数组用于打印 */</span>
|
||||
<a id="__codelineno-17-126" name="__codelineno-17-126" href="#__codelineno-17-126"></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-17-127" name="__codelineno-17-127" href="#__codelineno-17-127"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">front</span>
|
||||
<a id="__codelineno-17-128" name="__codelineno-17-128" href="#__codelineno-17-128"></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-17-129" name="__codelineno-17-129" href="#__codelineno-17-129"></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-17-130" name="__codelineno-17-130" href="#__codelineno-17-130"></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-17-131" name="__codelineno-17-131" href="#__codelineno-17-131"></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-17-132" name="__codelineno-17-132" href="#__codelineno-17-132"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-133" name="__codelineno-17-133" href="#__codelineno-17-133"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-17-134" name="__codelineno-17-134" href="#__codelineno-17-134"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-135" name="__codelineno-17-135" href="#__codelineno-17-135"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -2290,66 +2290,68 @@
|
||||
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="kd">class</span> <span class="nc">LinkedListQueue</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">front</span><span class="p">:</span> <span class="n">ListNode</span><span class="p">?</span> <span class="c1">// 头节点</span>
|
||||
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">rear</span><span class="p">:</span> <span class="n">ListNode</span><span class="p">?</span> <span class="c1">// 尾节点</span>
|
||||
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span><span class="p">:</span> <span class="nb">Int</span>
|
||||
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a>
|
||||
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{}</span>
|
||||
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a>
|
||||
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a> <span class="cm">/* 获取队列的长度 */</span>
|
||||
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a>
|
||||
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a> <span class="cm">/* 判断队列是否为空 */</span>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a> <span class="kd">func</span> <span class="nf">isEmpty</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a>
|
||||
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a> <span class="cm">/* 入队 */</span>
|
||||
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a> <span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a> <span class="c1">// 在尾节点后添加 num</span>
|
||||
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a> <span class="kd">let</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">ListNode</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">num</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a> <span class="c1">// 如果队列为空,则令头、尾节点都指向该节点</span>
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> <span class="k">if</span> <span class="n">front</span> <span class="p">==</span> <span class="kc">nil</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a> <span class="n">front</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a> <span class="n">rear</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a> <span class="c1">// 如果队列不为空,则将该节点添加到尾节点后</span>
|
||||
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a> <span class="k">else</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a> <span class="n">rear</span><span class="p">?.</span><span class="n">next</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a> <span class="n">rear</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a>
|
||||
<a id="__codelineno-17-36" name="__codelineno-17-36" href="#__codelineno-17-36"></a> <span class="cm">/* 出队 */</span>
|
||||
<a id="__codelineno-17-37" name="__codelineno-17-37" href="#__codelineno-17-37"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-17-38" name="__codelineno-17-38" href="#__codelineno-17-38"></a> <span class="kd">func</span> <span class="nf">pop</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-39" name="__codelineno-17-39" href="#__codelineno-17-39"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">peek</span><span class="p">()</span>
|
||||
<a id="__codelineno-17-40" name="__codelineno-17-40" href="#__codelineno-17-40"></a> <span class="c1">// 删除头节点</span>
|
||||
<a id="__codelineno-17-41" name="__codelineno-17-41" href="#__codelineno-17-41"></a> <span class="n">front</span> <span class="p">=</span> <span class="n">front</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-17-42" name="__codelineno-17-42" href="#__codelineno-17-42"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-43" name="__codelineno-17-43" href="#__codelineno-17-43"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-17-44" name="__codelineno-17-44" href="#__codelineno-17-44"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-45" name="__codelineno-17-45" href="#__codelineno-17-45"></a>
|
||||
<a id="__codelineno-17-46" name="__codelineno-17-46" href="#__codelineno-17-46"></a> <span class="cm">/* 访问队首元素 */</span>
|
||||
<a id="__codelineno-17-47" name="__codelineno-17-47" href="#__codelineno-17-47"></a> <span class="kd">func</span> <span class="nf">peek</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-48" name="__codelineno-17-48" href="#__codelineno-17-48"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-49" name="__codelineno-17-49" href="#__codelineno-17-49"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"队列为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-50" name="__codelineno-17-50" href="#__codelineno-17-50"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-51" name="__codelineno-17-51" href="#__codelineno-17-51"></a> <span class="k">return</span> <span class="n">front</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-52" name="__codelineno-17-52" href="#__codelineno-17-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-53" name="__codelineno-17-53" href="#__codelineno-17-53"></a>
|
||||
<a id="__codelineno-17-54" name="__codelineno-17-54" href="#__codelineno-17-54"></a> <span class="cm">/* 将链表转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-17-55" name="__codelineno-17-55" href="#__codelineno-17-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-17-56" name="__codelineno-17-56" href="#__codelineno-17-56"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">front</span>
|
||||
<a id="__codelineno-17-57" name="__codelineno-17-57" href="#__codelineno-17-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-17-58" name="__codelineno-17-58" href="#__codelineno-17-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-17-59" name="__codelineno-17-59" href="#__codelineno-17-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-17-60" name="__codelineno-17-60" href="#__codelineno-17-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-17-61" name="__codelineno-17-61" href="#__codelineno-17-61"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-62" name="__codelineno-17-62" href="#__codelineno-17-62"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-17-63" name="__codelineno-17-63" href="#__codelineno-17-63"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-64" name="__codelineno-17-64" href="#__codelineno-17-64"></a><span class="p">}</span>
|
||||
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="n">_size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a>
|
||||
<a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a> <span class="cm">/* 获取队列的长度 */</span>
|
||||
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="cm">/* 判断队列是否为空 */</span>
|
||||
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a> <span class="kd">func</span> <span class="nf">isEmpty</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a>
|
||||
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a> <span class="cm">/* 入队 */</span>
|
||||
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a> <span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a> <span class="c1">// 在尾节点后添加 num</span>
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> <span class="kd">let</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">ListNode</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">num</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a> <span class="c1">// 如果队列为空,则令头、尾节点都指向该节点</span>
|
||||
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a> <span class="k">if</span> <span class="n">front</span> <span class="p">==</span> <span class="kc">nil</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> <span class="n">front</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a> <span class="n">rear</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a> <span class="c1">// 如果队列不为空,则将该节点添加到尾节点后</span>
|
||||
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a> <span class="k">else</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a> <span class="n">rear</span><span class="p">?.</span><span class="n">next</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a> <span class="n">rear</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-36" name="__codelineno-17-36" href="#__codelineno-17-36"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-37" name="__codelineno-17-37" href="#__codelineno-17-37"></a>
|
||||
<a id="__codelineno-17-38" name="__codelineno-17-38" href="#__codelineno-17-38"></a> <span class="cm">/* 出队 */</span>
|
||||
<a id="__codelineno-17-39" name="__codelineno-17-39" href="#__codelineno-17-39"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-17-40" name="__codelineno-17-40" href="#__codelineno-17-40"></a> <span class="kd">func</span> <span class="nf">pop</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-41" name="__codelineno-17-41" href="#__codelineno-17-41"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">peek</span><span class="p">()</span>
|
||||
<a id="__codelineno-17-42" name="__codelineno-17-42" href="#__codelineno-17-42"></a> <span class="c1">// 删除头节点</span>
|
||||
<a id="__codelineno-17-43" name="__codelineno-17-43" href="#__codelineno-17-43"></a> <span class="n">front</span> <span class="p">=</span> <span class="n">front</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-17-44" name="__codelineno-17-44" href="#__codelineno-17-44"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-45" name="__codelineno-17-45" href="#__codelineno-17-45"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-17-46" name="__codelineno-17-46" href="#__codelineno-17-46"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-47" name="__codelineno-17-47" href="#__codelineno-17-47"></a>
|
||||
<a id="__codelineno-17-48" name="__codelineno-17-48" href="#__codelineno-17-48"></a> <span class="cm">/* 访问队首元素 */</span>
|
||||
<a id="__codelineno-17-49" name="__codelineno-17-49" href="#__codelineno-17-49"></a> <span class="kd">func</span> <span class="nf">peek</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-50" name="__codelineno-17-50" href="#__codelineno-17-50"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-51" name="__codelineno-17-51" href="#__codelineno-17-51"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"队列为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-52" name="__codelineno-17-52" href="#__codelineno-17-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-53" name="__codelineno-17-53" href="#__codelineno-17-53"></a> <span class="k">return</span> <span class="n">front</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-54" name="__codelineno-17-54" href="#__codelineno-17-54"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-55" name="__codelineno-17-55" href="#__codelineno-17-55"></a>
|
||||
<a id="__codelineno-17-56" name="__codelineno-17-56" href="#__codelineno-17-56"></a> <span class="cm">/* 将链表转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-17-57" name="__codelineno-17-57" href="#__codelineno-17-57"></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-17-58" name="__codelineno-17-58" href="#__codelineno-17-58"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">front</span>
|
||||
<a id="__codelineno-17-59" name="__codelineno-17-59" href="#__codelineno-17-59"></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-17-60" name="__codelineno-17-60" href="#__codelineno-17-60"></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-17-61" name="__codelineno-17-61" href="#__codelineno-17-61"></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-17-62" name="__codelineno-17-62" href="#__codelineno-17-62"></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-17-63" name="__codelineno-17-63" href="#__codelineno-17-63"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-64" name="__codelineno-17-64" href="#__codelineno-17-64"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-17-65" name="__codelineno-17-65" href="#__codelineno-17-65"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-66" name="__codelineno-17-66" href="#__codelineno-17-66"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
@@ -3189,71 +3191,69 @@
|
||||
<div class="highlight"><span class="filename">array_queue.swift</span><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="cm">/* 基于环形数组实现的队列 */</span>
|
||||
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a><span class="kd">class</span> <span class="nc">ArrayQueue</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">nums</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="c1">// 用于存储队列元素的数组</span>
|
||||
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">front</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 队首指针,指向队首元素</span>
|
||||
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">queSize</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 队列长度</span>
|
||||
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">front</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 队首指针,指向队首元素</span>
|
||||
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 队列长度</span>
|
||||
<a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a>
|
||||
<a id="__codelineno-29-7" name="__codelineno-29-7" href="#__codelineno-29-7"></a> <span class="kd">init</span><span class="p">(</span><span class="n">capacity</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-8" name="__codelineno-29-8" href="#__codelineno-29-8"></a> <span class="c1">// 初始化数组</span>
|
||||
<a id="__codelineno-29-9" name="__codelineno-29-9" href="#__codelineno-29-9"></a> <span class="n">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">capacity</span><span class="p">)</span>
|
||||
<a id="__codelineno-29-10" name="__codelineno-29-10" href="#__codelineno-29-10"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-11" name="__codelineno-29-11" href="#__codelineno-29-11"></a>
|
||||
<a id="__codelineno-29-12" name="__codelineno-29-12" href="#__codelineno-29-12"></a> <span class="cm">/* 获取队列的容量 */</span>
|
||||
<a id="__codelineno-29-13" name="__codelineno-29-13" href="#__codelineno-29-13"></a> <span class="kd">func</span> <span class="nf">capacity</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-14" name="__codelineno-29-14" href="#__codelineno-29-14"></a> <span class="n">nums</span><span class="p">.</span><span class="bp">count</span>
|
||||
<a id="__codelineno-29-15" name="__codelineno-29-15" href="#__codelineno-29-15"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-16" name="__codelineno-29-16" href="#__codelineno-29-16"></a>
|
||||
<a id="__codelineno-29-17" name="__codelineno-29-17" href="#__codelineno-29-17"></a> <span class="cm">/* 获取队列的长度 */</span>
|
||||
<a id="__codelineno-29-18" name="__codelineno-29-18" href="#__codelineno-29-18"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-19" name="__codelineno-29-19" href="#__codelineno-29-19"></a> <span class="n">queSize</span>
|
||||
<a id="__codelineno-29-20" name="__codelineno-29-20" href="#__codelineno-29-20"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-21" name="__codelineno-29-21" href="#__codelineno-29-21"></a>
|
||||
<a id="__codelineno-29-22" name="__codelineno-29-22" href="#__codelineno-29-22"></a> <span class="cm">/* 判断队列是否为空 */</span>
|
||||
<a id="__codelineno-29-23" name="__codelineno-29-23" href="#__codelineno-29-23"></a> <span class="kd">func</span> <span class="nf">isEmpty</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-24" name="__codelineno-29-24" href="#__codelineno-29-24"></a> <span class="n">queSize</span> <span class="p">==</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-29-25" name="__codelineno-29-25" href="#__codelineno-29-25"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-26" name="__codelineno-29-26" href="#__codelineno-29-26"></a>
|
||||
<a id="__codelineno-29-27" name="__codelineno-29-27" href="#__codelineno-29-27"></a> <span class="cm">/* 入队 */</span>
|
||||
<a id="__codelineno-29-28" name="__codelineno-29-28" href="#__codelineno-29-28"></a> <span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-29" name="__codelineno-29-29" href="#__codelineno-29-29"></a> <span class="k">if</span> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="n">capacity</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-30" name="__codelineno-29-30" href="#__codelineno-29-30"></a> <span class="bp">print</span><span class="p">(</span><span class="s">"队列已满"</span><span class="p">)</span>
|
||||
<a id="__codelineno-29-31" name="__codelineno-29-31" href="#__codelineno-29-31"></a> <span class="k">return</span>
|
||||
<a id="__codelineno-29-32" name="__codelineno-29-32" href="#__codelineno-29-32"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-33" name="__codelineno-29-33" href="#__codelineno-29-33"></a> <span class="c1">// 计算队尾指针,指向队尾索引 + 1</span>
|
||||
<a id="__codelineno-29-34" name="__codelineno-29-34" href="#__codelineno-29-34"></a> <span class="c1">// 通过取余操作实现 rear 越过数组尾部后回到头部</span>
|
||||
<a id="__codelineno-29-35" name="__codelineno-29-35" href="#__codelineno-29-35"></a> <span class="kd">let</span> <span class="nv">rear</span> <span class="p">=</span> <span class="p">(</span><span class="n">front</span> <span class="o">+</span> <span class="n">queSize</span><span class="p">)</span> <span class="o">%</span> <span class="n">capacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-29-36" name="__codelineno-29-36" href="#__codelineno-29-36"></a> <span class="c1">// 将 num 添加至队尾</span>
|
||||
<a id="__codelineno-29-37" name="__codelineno-29-37" href="#__codelineno-29-37"></a> <span class="n">nums</span><span class="p">[</span><span class="n">rear</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-29-38" name="__codelineno-29-38" href="#__codelineno-29-38"></a> <span class="n">queSize</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-29-39" name="__codelineno-29-39" href="#__codelineno-29-39"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-40" name="__codelineno-29-40" href="#__codelineno-29-40"></a>
|
||||
<a id="__codelineno-29-41" name="__codelineno-29-41" href="#__codelineno-29-41"></a> <span class="cm">/* 出队 */</span>
|
||||
<a id="__codelineno-29-42" name="__codelineno-29-42" href="#__codelineno-29-42"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-29-43" name="__codelineno-29-43" href="#__codelineno-29-43"></a> <span class="kd">func</span> <span class="nf">pop</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-44" name="__codelineno-29-44" href="#__codelineno-29-44"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">peek</span><span class="p">()</span>
|
||||
<a id="__codelineno-29-45" name="__codelineno-29-45" href="#__codelineno-29-45"></a> <span class="c1">// 队首指针向后移动一位,若越过尾部,则返回到数组头部</span>
|
||||
<a id="__codelineno-29-46" name="__codelineno-29-46" href="#__codelineno-29-46"></a> <span class="n">front</span> <span class="p">=</span> <span class="p">(</span><span class="n">front</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">capacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-29-47" name="__codelineno-29-47" href="#__codelineno-29-47"></a> <span class="n">queSize</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-29-48" name="__codelineno-29-48" href="#__codelineno-29-48"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-29-49" name="__codelineno-29-49" href="#__codelineno-29-49"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-50" name="__codelineno-29-50" href="#__codelineno-29-50"></a>
|
||||
<a id="__codelineno-29-51" name="__codelineno-29-51" href="#__codelineno-29-51"></a> <span class="cm">/* 访问队首元素 */</span>
|
||||
<a id="__codelineno-29-52" name="__codelineno-29-52" href="#__codelineno-29-52"></a> <span class="kd">func</span> <span class="nf">peek</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-53" name="__codelineno-29-53" href="#__codelineno-29-53"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-54" name="__codelineno-29-54" href="#__codelineno-29-54"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"队列为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-29-55" name="__codelineno-29-55" href="#__codelineno-29-55"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-56" name="__codelineno-29-56" href="#__codelineno-29-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-29-57" name="__codelineno-29-57" href="#__codelineno-29-57"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-58" name="__codelineno-29-58" href="#__codelineno-29-58"></a>
|
||||
<a id="__codelineno-29-59" name="__codelineno-29-59" href="#__codelineno-29-59"></a> <span class="cm">/* 返回数组 */</span>
|
||||
<a id="__codelineno-29-60" name="__codelineno-29-60" href="#__codelineno-29-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-29-61" name="__codelineno-29-61" href="#__codelineno-29-61"></a> <span class="c1">// 仅转换有效长度范围内的列表元素</span>
|
||||
<a id="__codelineno-29-62" name="__codelineno-29-62" href="#__codelineno-29-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-29-63" name="__codelineno-29-63" href="#__codelineno-29-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-29-64" name="__codelineno-29-64" href="#__codelineno-29-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-29-65" name="__codelineno-29-65" href="#__codelineno-29-65"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-66" name="__codelineno-29-66" href="#__codelineno-29-66"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-29-67" name="__codelineno-29-67" href="#__codelineno-29-67"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-68" name="__codelineno-29-68" href="#__codelineno-29-68"></a><span class="p">}</span>
|
||||
<a id="__codelineno-29-10" name="__codelineno-29-10" href="#__codelineno-29-10"></a> <span class="n">front</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-29-11" name="__codelineno-29-11" href="#__codelineno-29-11"></a> <span class="n">_size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-29-12" name="__codelineno-29-12" href="#__codelineno-29-12"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-13" name="__codelineno-29-13" href="#__codelineno-29-13"></a>
|
||||
<a id="__codelineno-29-14" name="__codelineno-29-14" href="#__codelineno-29-14"></a> <span class="cm">/* 获取队列的容量 */</span>
|
||||
<a id="__codelineno-29-15" name="__codelineno-29-15" href="#__codelineno-29-15"></a> <span class="kd">func</span> <span class="nf">capacity</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-16" name="__codelineno-29-16" href="#__codelineno-29-16"></a> <span class="n">nums</span><span class="p">.</span><span class="bp">count</span>
|
||||
<a id="__codelineno-29-17" name="__codelineno-29-17" href="#__codelineno-29-17"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-18" name="__codelineno-29-18" href="#__codelineno-29-18"></a>
|
||||
<a id="__codelineno-29-19" name="__codelineno-29-19" href="#__codelineno-29-19"></a> <span class="cm">/* 获取队列的长度 */</span>
|
||||
<a id="__codelineno-29-20" name="__codelineno-29-20" href="#__codelineno-29-20"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-21" name="__codelineno-29-21" href="#__codelineno-29-21"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-29-22" name="__codelineno-29-22" href="#__codelineno-29-22"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-23" name="__codelineno-29-23" href="#__codelineno-29-23"></a>
|
||||
<a id="__codelineno-29-24" name="__codelineno-29-24" href="#__codelineno-29-24"></a> <span class="cm">/* 判断队列是否为空 */</span>
|
||||
<a id="__codelineno-29-25" name="__codelineno-29-25" href="#__codelineno-29-25"></a> <span class="kd">func</span> <span class="nf">isEmpty</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-26" name="__codelineno-29-26" href="#__codelineno-29-26"></a> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-29-27" name="__codelineno-29-27" href="#__codelineno-29-27"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-28" name="__codelineno-29-28" href="#__codelineno-29-28"></a>
|
||||
<a id="__codelineno-29-29" name="__codelineno-29-29" href="#__codelineno-29-29"></a> <span class="cm">/* 入队 */</span>
|
||||
<a id="__codelineno-29-30" name="__codelineno-29-30" href="#__codelineno-29-30"></a> <span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-31" name="__codelineno-29-31" href="#__codelineno-29-31"></a> <span class="k">if</span> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="n">capacity</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-32" name="__codelineno-29-32" href="#__codelineno-29-32"></a> <span class="bp">print</span><span class="p">(</span><span class="s">"队列已满"</span><span class="p">)</span>
|
||||
<a id="__codelineno-29-33" name="__codelineno-29-33" href="#__codelineno-29-33"></a> <span class="k">return</span>
|
||||
<a id="__codelineno-29-34" name="__codelineno-29-34" href="#__codelineno-29-34"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-35" name="__codelineno-29-35" href="#__codelineno-29-35"></a> <span class="c1">// 计算队尾指针,指向队尾索引 + 1</span>
|
||||
<a id="__codelineno-29-36" name="__codelineno-29-36" href="#__codelineno-29-36"></a> <span class="c1">// 通过取余操作实现 rear 越过数组尾部后回到头部</span>
|
||||
<a id="__codelineno-29-37" name="__codelineno-29-37" href="#__codelineno-29-37"></a> <span class="kd">let</span> <span class="nv">rear</span> <span class="p">=</span> <span class="p">(</span><span class="n">front</span> <span class="o">+</span> <span class="n">size</span><span class="p">())</span> <span class="o">%</span> <span class="n">capacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-29-38" name="__codelineno-29-38" href="#__codelineno-29-38"></a> <span class="c1">// 将 num 添加至队尾</span>
|
||||
<a id="__codelineno-29-39" name="__codelineno-29-39" href="#__codelineno-29-39"></a> <span class="n">nums</span><span class="p">[</span><span class="n">rear</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
|
||||
<a id="__codelineno-29-40" name="__codelineno-29-40" href="#__codelineno-29-40"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-29-41" name="__codelineno-29-41" href="#__codelineno-29-41"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-42" name="__codelineno-29-42" href="#__codelineno-29-42"></a>
|
||||
<a id="__codelineno-29-43" name="__codelineno-29-43" href="#__codelineno-29-43"></a> <span class="cm">/* 出队 */</span>
|
||||
<a id="__codelineno-29-44" name="__codelineno-29-44" href="#__codelineno-29-44"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-29-45" name="__codelineno-29-45" href="#__codelineno-29-45"></a> <span class="kd">func</span> <span class="nf">pop</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-46" name="__codelineno-29-46" href="#__codelineno-29-46"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">peek</span><span class="p">()</span>
|
||||
<a id="__codelineno-29-47" name="__codelineno-29-47" href="#__codelineno-29-47"></a> <span class="c1">// 队首指针向后移动一位,若越过尾部,则返回到数组头部</span>
|
||||
<a id="__codelineno-29-48" name="__codelineno-29-48" href="#__codelineno-29-48"></a> <span class="n">front</span> <span class="p">=</span> <span class="p">(</span><span class="n">front</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">%</span> <span class="n">capacity</span><span class="p">()</span>
|
||||
<a id="__codelineno-29-49" name="__codelineno-29-49" href="#__codelineno-29-49"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-29-50" name="__codelineno-29-50" href="#__codelineno-29-50"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-29-51" name="__codelineno-29-51" href="#__codelineno-29-51"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-52" name="__codelineno-29-52" href="#__codelineno-29-52"></a>
|
||||
<a id="__codelineno-29-53" name="__codelineno-29-53" href="#__codelineno-29-53"></a> <span class="cm">/* 访问队首元素 */</span>
|
||||
<a id="__codelineno-29-54" name="__codelineno-29-54" href="#__codelineno-29-54"></a> <span class="kd">func</span> <span class="nf">peek</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-55" name="__codelineno-29-55" href="#__codelineno-29-55"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-29-56" name="__codelineno-29-56" href="#__codelineno-29-56"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"队列为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-29-57" name="__codelineno-29-57" href="#__codelineno-29-57"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-58" name="__codelineno-29-58" href="#__codelineno-29-58"></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-29-59" name="__codelineno-29-59" href="#__codelineno-29-59"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-60" name="__codelineno-29-60" href="#__codelineno-29-60"></a>
|
||||
<a id="__codelineno-29-61" name="__codelineno-29-61" href="#__codelineno-29-61"></a> <span class="cm">/* 返回数组 */</span>
|
||||
<a id="__codelineno-29-62" name="__codelineno-29-62" href="#__codelineno-29-62"></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-29-63" name="__codelineno-29-63" href="#__codelineno-29-63"></a> <span class="c1">// 仅转换有效长度范围内的列表元素</span>
|
||||
<a id="__codelineno-29-64" name="__codelineno-29-64" href="#__codelineno-29-64"></a> <span class="p">(</span><span class="n">front</span> <span class="p">..</span><span class="o"><</span> <span class="n">front</span> <span class="o">+</span> <span class="n">size</span><span class="p">()).</span><span class="bp">map</span> <span class="p">{</span> <span class="n">nums</span><span class="p">[</span><span class="nv">$0</span> <span class="o">%</span> <span class="n">capacity</span><span class="p">()]</span> <span class="p">}</span>
|
||||
<a id="__codelineno-29-65" name="__codelineno-29-65" href="#__codelineno-29-65"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-29-66" name="__codelineno-29-66" href="#__codelineno-29-66"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
@@ -2264,56 +2264,58 @@
|
||||
<div class="highlight"><span class="filename">linkedlist_stack.swift</span><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="cm">/* 基于链表实现的栈 */</span>
|
||||
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="kd">class</span> <span class="nc">LinkedListStack</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_peek</span><span class="p">:</span> <span class="n">ListNode</span><span class="p">?</span> <span class="c1">// 将头节点作为栈顶</span>
|
||||
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 栈的长度</span>
|
||||
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span><span class="p">:</span> <span class="nb">Int</span> <span class="c1">// 栈的长度</span>
|
||||
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a>
|
||||
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{}</span>
|
||||
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a>
|
||||
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="cm">/* 获取栈的长度 */</span>
|
||||
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a>
|
||||
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a> <span class="cm">/* 判断栈是否为空 */</span>
|
||||
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a> <span class="kd">func</span> <span class="nf">isEmpty</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a>
|
||||
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a> <span class="cm">/* 入栈 */</span>
|
||||
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a> <span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a> <span class="kd">let</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">ListNode</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">num</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a> <span class="n">node</span><span class="p">.</span><span class="n">next</span> <span class="p">=</span> <span class="n">_peek</span>
|
||||
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a> <span class="n">_peek</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a>
|
||||
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a> <span class="cm">/* 出栈 */</span>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a> <span class="kd">func</span> <span class="nf">pop</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">peek</span><span class="p">()</span>
|
||||
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a> <span class="n">_peek</span> <span class="p">=</span> <span class="n">_peek</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a>
|
||||
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a> <span class="cm">/* 访问栈顶元素 */</span>
|
||||
<a id="__codelineno-17-36" name="__codelineno-17-36" href="#__codelineno-17-36"></a> <span class="kd">func</span> <span class="nf">peek</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-37" name="__codelineno-17-37" href="#__codelineno-17-37"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-38" name="__codelineno-17-38" href="#__codelineno-17-38"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"栈为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-39" name="__codelineno-17-39" href="#__codelineno-17-39"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-40" name="__codelineno-17-40" href="#__codelineno-17-40"></a> <span class="k">return</span> <span class="n">_peek</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-41" name="__codelineno-17-41" href="#__codelineno-17-41"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-42" name="__codelineno-17-42" href="#__codelineno-17-42"></a>
|
||||
<a id="__codelineno-17-43" name="__codelineno-17-43" href="#__codelineno-17-43"></a> <span class="cm">/* 将 List 转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-17-44" name="__codelineno-17-44" href="#__codelineno-17-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-17-45" name="__codelineno-17-45" href="#__codelineno-17-45"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">_peek</span>
|
||||
<a id="__codelineno-17-46" name="__codelineno-17-46" href="#__codelineno-17-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-17-47" name="__codelineno-17-47" href="#__codelineno-17-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-17-48" name="__codelineno-17-48" href="#__codelineno-17-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-17-49" name="__codelineno-17-49" href="#__codelineno-17-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-17-50" name="__codelineno-17-50" href="#__codelineno-17-50"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-51" name="__codelineno-17-51" href="#__codelineno-17-51"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-17-52" name="__codelineno-17-52" href="#__codelineno-17-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-53" name="__codelineno-17-53" href="#__codelineno-17-53"></a><span class="p">}</span>
|
||||
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> <span class="n">_size</span> <span class="p">=</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a>
|
||||
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a> <span class="cm">/* 获取栈的长度 */</span>
|
||||
<a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a> <span class="n">_size</span>
|
||||
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a>
|
||||
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a> <span class="cm">/* 判断栈是否为空 */</span>
|
||||
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> <span class="kd">func</span> <span class="nf">isEmpty</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a> <span class="n">size</span><span class="p">()</span> <span class="p">==</span> <span class="mi">0</span>
|
||||
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a>
|
||||
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a> <span class="cm">/* 入栈 */</span>
|
||||
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a> <span class="kd">func</span> <span class="nf">push</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a> <span class="kd">let</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">ListNode</span><span class="p">(</span><span class="n">x</span><span class="p">:</span> <span class="n">num</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a> <span class="n">node</span><span class="p">.</span><span class="n">next</span> <span class="p">=</span> <span class="n">_peek</span>
|
||||
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> <span class="n">_peek</span> <span class="p">=</span> <span class="n">node</span>
|
||||
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a>
|
||||
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a> <span class="cm">/* 出栈 */</span>
|
||||
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a> <span class="p">@</span><span class="n">discardableResult</span>
|
||||
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a> <span class="kd">func</span> <span class="nf">pop</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">peek</span><span class="p">()</span>
|
||||
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a> <span class="n">_peek</span> <span class="p">=</span> <span class="n">_peek</span><span class="p">?.</span><span class="n">next</span>
|
||||
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a> <span class="k">return</span> <span class="n">num</span>
|
||||
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-36" name="__codelineno-17-36" href="#__codelineno-17-36"></a>
|
||||
<a id="__codelineno-17-37" name="__codelineno-17-37" href="#__codelineno-17-37"></a> <span class="cm">/* 访问栈顶元素 */</span>
|
||||
<a id="__codelineno-17-38" name="__codelineno-17-38" href="#__codelineno-17-38"></a> <span class="kd">func</span> <span class="nf">peek</span><span class="p">()</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-39" name="__codelineno-17-39" href="#__codelineno-17-39"></a> <span class="k">if</span> <span class="bp">isEmpty</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-40" name="__codelineno-17-40" href="#__codelineno-17-40"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">"栈为空"</span><span class="p">)</span>
|
||||
<a id="__codelineno-17-41" name="__codelineno-17-41" href="#__codelineno-17-41"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-42" name="__codelineno-17-42" href="#__codelineno-17-42"></a> <span class="k">return</span> <span class="n">_peek</span><span class="p">!.</span><span class="n">val</span>
|
||||
<a id="__codelineno-17-43" name="__codelineno-17-43" href="#__codelineno-17-43"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-44" name="__codelineno-17-44" href="#__codelineno-17-44"></a>
|
||||
<a id="__codelineno-17-45" name="__codelineno-17-45" href="#__codelineno-17-45"></a> <span class="cm">/* 将 List 转化为 Array 并返回 */</span>
|
||||
<a id="__codelineno-17-46" name="__codelineno-17-46" href="#__codelineno-17-46"></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-17-47" name="__codelineno-17-47" href="#__codelineno-17-47"></a> <span class="kd">var</span> <span class="nv">node</span> <span class="p">=</span> <span class="n">_peek</span>
|
||||
<a id="__codelineno-17-48" name="__codelineno-17-48" href="#__codelineno-17-48"></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-17-49" name="__codelineno-17-49" href="#__codelineno-17-49"></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><span class="n">reversed</span><span class="p">()</span> <span class="p">{</span>
|
||||
<a id="__codelineno-17-50" name="__codelineno-17-50" href="#__codelineno-17-50"></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-17-51" name="__codelineno-17-51" href="#__codelineno-17-51"></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-17-52" name="__codelineno-17-52" href="#__codelineno-17-52"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-53" name="__codelineno-17-53" href="#__codelineno-17-53"></a> <span class="k">return</span> <span class="n">res</span>
|
||||
<a id="__codelineno-17-54" name="__codelineno-17-54" href="#__codelineno-17-54"></a> <span class="p">}</span>
|
||||
<a id="__codelineno-17-55" name="__codelineno-17-55" href="#__codelineno-17-55"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
||||
File diff suppressed because one or more lines are too long
+37
-37
@@ -2,187 +2,187 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_array_and_linkedlist/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_array_and_linkedlist/array/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_array_and_linkedlist/linked_list/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_array_and_linkedlist/list/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_array_and_linkedlist/ram_and_cache/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_array_and_linkedlist/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_computational_complexity/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_computational_complexity/iteration_and_recursion/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_computational_complexity/performance_evaluation/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_computational_complexity/space_complexity/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_computational_complexity/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_computational_complexity/time_complexity/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_data_structure/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_data_structure/basic_data_types/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_data_structure/character_encoding/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_data_structure/classification_of_data_structure/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_data_structure/number_encoding/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_data_structure/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_hashing/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_hashing/hash_algorithm/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_hashing/hash_collision/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_hashing/hash_map/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_hashing/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_introduction/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_introduction/algorithms_are_everywhere/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_introduction/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_introduction/what_is_dsa/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_preface/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_preface/about_the_book/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_preface/suggestions/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_preface/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_stack_and_queue/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_stack_and_queue/deque/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_stack_and_queue/queue/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_stack_and_queue/stack/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.hello-algo.com/en/chapter_stack_and_queue/summary/</loc>
|
||||
<lastmod>2024-03-19</lastmod>
|
||||
<lastmod>2024-03-20</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
Reference in New Issue
Block a user