mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-29 21:33:07 +08:00
deploy
This commit is contained in:
@ -5206,77 +5206,6 @@
|
||||
<a id="__codelineno-40-74" name="__codelineno-40-74" href="#__codelineno-40-74"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-75" name="__codelineno-40-75" href="#__codelineno-40-75"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-76" name="__codelineno-40-76" href="#__codelineno-40-76"></a><span class="p">}</span>
|
||||
<a id="__codelineno-40-77" name="__codelineno-40-77" href="#__codelineno-40-77"></a>
|
||||
<a id="__codelineno-40-78" name="__codelineno-40-78" href="#__codelineno-40-78"></a><span class="cm">/* 基於陣列實現的雜湊表 */</span>
|
||||
<a id="__codelineno-40-79" name="__codelineno-40-79" href="#__codelineno-40-79"></a><span class="kd">class</span><span class="w"> </span><span class="nc">ArrayHashMap</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-80" name="__codelineno-40-80" href="#__codelineno-40-80"></a><span class="w"> </span><span class="c1">// 初始化陣列,包含 100 個桶</span>
|
||||
<a id="__codelineno-40-81" name="__codelineno-40-81" href="#__codelineno-40-81"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">buckets</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">arrayOfNulls</span><span class="o"><</span><span class="n">Pair</span><span class="o">></span><span class="p">(</span><span class="m">100</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-82" name="__codelineno-40-82" href="#__codelineno-40-82"></a>
|
||||
<a id="__codelineno-40-83" name="__codelineno-40-83" href="#__codelineno-40-83"></a><span class="w"> </span><span class="cm">/* 雜湊函式 */</span>
|
||||
<a id="__codelineno-40-84" name="__codelineno-40-84" href="#__codelineno-40-84"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">Int</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-85" name="__codelineno-40-85" href="#__codelineno-40-85"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">key</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="m">100</span>
|
||||
<a id="__codelineno-40-86" name="__codelineno-40-86" href="#__codelineno-40-86"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">index</span>
|
||||
<a id="__codelineno-40-87" name="__codelineno-40-87" href="#__codelineno-40-87"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-88" name="__codelineno-40-88" href="#__codelineno-40-88"></a>
|
||||
<a id="__codelineno-40-89" name="__codelineno-40-89" href="#__codelineno-40-89"></a><span class="w"> </span><span class="cm">/* 查詢操作 */</span>
|
||||
<a id="__codelineno-40-90" name="__codelineno-40-90" href="#__codelineno-40-90"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="n">key</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">):</span><span class="w"> </span><span class="kt">String?</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-91" name="__codelineno-40-91" href="#__codelineno-40-91"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-92" name="__codelineno-40-92" href="#__codelineno-40-92"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">pair</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">buckets</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="w"> </span><span class="o">?:</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">null</span>
|
||||
<a id="__codelineno-40-93" name="__codelineno-40-93" href="#__codelineno-40-93"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">pair</span><span class="p">.</span><span class="na">_val</span>
|
||||
<a id="__codelineno-40-94" name="__codelineno-40-94" href="#__codelineno-40-94"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-95" name="__codelineno-40-95" href="#__codelineno-40-95"></a>
|
||||
<a id="__codelineno-40-96" name="__codelineno-40-96" href="#__codelineno-40-96"></a><span class="w"> </span><span class="cm">/* 新增操作 */</span>
|
||||
<a id="__codelineno-40-97" name="__codelineno-40-97" href="#__codelineno-40-97"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">put</span><span class="p">(</span><span class="n">key</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">,</span><span class="w"> </span><span class="n">_val</span><span class="p">:</span><span class="w"> </span><span class="kt">String</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-98" name="__codelineno-40-98" href="#__codelineno-40-98"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">pair</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Pair</span><span class="p">(</span><span class="n">key</span><span class="p">,</span><span class="w"> </span><span class="n">_val</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-99" name="__codelineno-40-99" href="#__codelineno-40-99"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-100" name="__codelineno-40-100" href="#__codelineno-40-100"></a><span class="w"> </span><span class="n">buckets</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">pair</span>
|
||||
<a id="__codelineno-40-101" name="__codelineno-40-101" href="#__codelineno-40-101"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-102" name="__codelineno-40-102" href="#__codelineno-40-102"></a>
|
||||
<a id="__codelineno-40-103" name="__codelineno-40-103" href="#__codelineno-40-103"></a><span class="w"> </span><span class="cm">/* 刪除操作 */</span>
|
||||
<a id="__codelineno-40-104" name="__codelineno-40-104" href="#__codelineno-40-104"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">remove</span><span class="p">(</span><span class="n">key</span><span class="p">:</span><span class="w"> </span><span class="kt">Int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-105" name="__codelineno-40-105" href="#__codelineno-40-105"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">index</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">hashFunc</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-106" name="__codelineno-40-106" href="#__codelineno-40-106"></a><span class="w"> </span><span class="c1">// 置為 null ,代表刪除</span>
|
||||
<a id="__codelineno-40-107" name="__codelineno-40-107" href="#__codelineno-40-107"></a><span class="w"> </span><span class="n">buckets</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span>
|
||||
<a id="__codelineno-40-108" name="__codelineno-40-108" href="#__codelineno-40-108"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-109" name="__codelineno-40-109" href="#__codelineno-40-109"></a>
|
||||
<a id="__codelineno-40-110" name="__codelineno-40-110" href="#__codelineno-40-110"></a><span class="w"> </span><span class="cm">/* 獲取所有鍵值對 */</span>
|
||||
<a id="__codelineno-40-111" name="__codelineno-40-111" href="#__codelineno-40-111"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">pairSet</span><span class="p">():</span><span class="w"> </span><span class="n">MutableList</span><span class="o"><</span><span class="n">Pair</span><span class="o">></span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-112" name="__codelineno-40-112" href="#__codelineno-40-112"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">pairSet</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mutableListOf</span><span class="o"><</span><span class="n">Pair</span><span class="o">></span><span class="p">()</span>
|
||||
<a id="__codelineno-40-113" name="__codelineno-40-113" href="#__codelineno-40-113"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">pair</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">buckets</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-114" name="__codelineno-40-114" href="#__codelineno-40-114"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">pair</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-115" name="__codelineno-40-115" href="#__codelineno-40-115"></a><span class="w"> </span><span class="n">pairSet</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">pair</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-116" name="__codelineno-40-116" href="#__codelineno-40-116"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-117" name="__codelineno-40-117" href="#__codelineno-40-117"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">pairSet</span>
|
||||
<a id="__codelineno-40-118" name="__codelineno-40-118" href="#__codelineno-40-118"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-119" name="__codelineno-40-119" href="#__codelineno-40-119"></a>
|
||||
<a id="__codelineno-40-120" name="__codelineno-40-120" href="#__codelineno-40-120"></a><span class="w"> </span><span class="cm">/* 獲取所有鍵 */</span>
|
||||
<a id="__codelineno-40-121" name="__codelineno-40-121" href="#__codelineno-40-121"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">keySet</span><span class="p">():</span><span class="w"> </span><span class="n">MutableList</span><span class="o"><</span><span class="kt">Int</span><span class="o">></span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-122" name="__codelineno-40-122" href="#__codelineno-40-122"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">keySet</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mutableListOf</span><span class="o"><</span><span class="kt">Int</span><span class="o">></span><span class="p">()</span>
|
||||
<a id="__codelineno-40-123" name="__codelineno-40-123" href="#__codelineno-40-123"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">pair</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">buckets</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-124" name="__codelineno-40-124" href="#__codelineno-40-124"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">pair</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-125" name="__codelineno-40-125" href="#__codelineno-40-125"></a><span class="w"> </span><span class="n">keySet</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">pair</span><span class="p">.</span><span class="na">key</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-126" name="__codelineno-40-126" href="#__codelineno-40-126"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-127" name="__codelineno-40-127" href="#__codelineno-40-127"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">keySet</span>
|
||||
<a id="__codelineno-40-128" name="__codelineno-40-128" href="#__codelineno-40-128"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-129" name="__codelineno-40-129" href="#__codelineno-40-129"></a>
|
||||
<a id="__codelineno-40-130" name="__codelineno-40-130" href="#__codelineno-40-130"></a><span class="w"> </span><span class="cm">/* 獲取所有值 */</span>
|
||||
<a id="__codelineno-40-131" name="__codelineno-40-131" href="#__codelineno-40-131"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">valueSet</span><span class="p">():</span><span class="w"> </span><span class="n">MutableList</span><span class="o"><</span><span class="kt">String</span><span class="o">></span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-132" name="__codelineno-40-132" href="#__codelineno-40-132"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">valueSet</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mutableListOf</span><span class="o"><</span><span class="kt">String</span><span class="o">></span><span class="p">()</span>
|
||||
<a id="__codelineno-40-133" name="__codelineno-40-133" href="#__codelineno-40-133"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">pair</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">buckets</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-134" name="__codelineno-40-134" href="#__codelineno-40-134"></a><span class="w"> </span><span class="n">pair</span><span class="o">?.</span><span class="na">let</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">valueSet</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="nb">it</span><span class="p">.</span><span class="na">_val</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-135" name="__codelineno-40-135" href="#__codelineno-40-135"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-136" name="__codelineno-40-136" href="#__codelineno-40-136"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">valueSet</span>
|
||||
<a id="__codelineno-40-137" name="__codelineno-40-137" href="#__codelineno-40-137"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-138" name="__codelineno-40-138" href="#__codelineno-40-138"></a>
|
||||
<a id="__codelineno-40-139" name="__codelineno-40-139" href="#__codelineno-40-139"></a><span class="w"> </span><span class="cm">/* 列印雜湊表 */</span>
|
||||
<a id="__codelineno-40-140" name="__codelineno-40-140" href="#__codelineno-40-140"></a><span class="w"> </span><span class="kd">fun</span><span class="w"> </span><span class="nf">print</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-141" name="__codelineno-40-141" href="#__codelineno-40-141"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">kv</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">pairSet</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
|
||||
<a id="__codelineno-40-142" name="__codelineno-40-142" href="#__codelineno-40-142"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">key</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">kv</span><span class="p">.</span><span class="na">key</span>
|
||||
<a id="__codelineno-40-143" name="__codelineno-40-143" href="#__codelineno-40-143"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">_val</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">kv</span><span class="p">.</span><span class="na">_val</span>
|
||||
<a id="__codelineno-40-144" name="__codelineno-40-144" href="#__codelineno-40-144"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"</span><span class="si">${</span><span class="n">key</span><span class="si">}</span><span class="s"> -> </span><span class="si">${</span><span class="n">_val</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
|
||||
<a id="__codelineno-40-145" name="__codelineno-40-145" href="#__codelineno-40-145"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-146" name="__codelineno-40-146" href="#__codelineno-40-146"></a><span class="w"> </span><span class="p">}</span>
|
||||
<a id="__codelineno-40-147" name="__codelineno-40-147" href="#__codelineno-40-147"></a><span class="p">}</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
|
Reference in New Issue
Block a user