mirror of
https://github.com/krahets/hello-algo.git
synced 2026-05-11 11:07:14 +08:00
Review Swift codes (#1150)
* feat(swift): review for chapter_computational_complexity * feat(swift): review for chapter_data_structure * feat(swift): review for chapter_array_and_linkedlist * feat(swift): review for chapter_stack_and_queue * feat(swift): review for chapter_hashing * feat(swift): review for chapter_tree * feat(swift): add codes for heap article * feat(swift): review for chapter_heap * feat(swift): review for chapter_graph * feat(swift): review for chapter_searching * feat(swift): review for chapter_sorting * feat(swift): review for chapter_divide_and_conquer * feat(swift): review for chapter_backtracking * feat(swift): review for chapter_dynamic_programming * feat(swift): review for chapter_greedy * feat(swift): review for utils * feat(swift): update ci tool * feat(swift): trailing closure * feat(swift): array init * feat(swift): map index
This commit is contained in:
@@ -8,13 +8,11 @@ import utils
|
||||
|
||||
/* 基于数组实现的哈希表 */
|
||||
class ArrayHashMap {
|
||||
private var buckets: [Pair?] = []
|
||||
private var buckets: [Pair?]
|
||||
|
||||
init() {
|
||||
// 初始化数组,包含 100 个桶
|
||||
for _ in 0 ..< 100 {
|
||||
buckets.append(nil)
|
||||
}
|
||||
buckets = Array(repeating: nil, count: 100)
|
||||
}
|
||||
|
||||
/* 哈希函数 */
|
||||
@@ -46,35 +44,17 @@ class ArrayHashMap {
|
||||
|
||||
/* 获取所有键值对 */
|
||||
func pairSet() -> [Pair] {
|
||||
var pairSet: [Pair] = []
|
||||
for pair in buckets {
|
||||
if let pair = pair {
|
||||
pairSet.append(pair)
|
||||
}
|
||||
}
|
||||
return pairSet
|
||||
buckets.compactMap { $0 }
|
||||
}
|
||||
|
||||
/* 获取所有键 */
|
||||
func keySet() -> [Int] {
|
||||
var keySet: [Int] = []
|
||||
for pair in buckets {
|
||||
if let pair = pair {
|
||||
keySet.append(pair.key)
|
||||
}
|
||||
}
|
||||
return keySet
|
||||
buckets.compactMap { $0?.key }
|
||||
}
|
||||
|
||||
/* 获取所有值 */
|
||||
func valueSet() -> [String] {
|
||||
var valueSet: [String] = []
|
||||
for pair in buckets {
|
||||
if let pair = pair {
|
||||
valueSet.append(pair.val)
|
||||
}
|
||||
}
|
||||
return valueSet
|
||||
buckets.compactMap { $0?.val }
|
||||
}
|
||||
|
||||
/* 打印哈希表 */
|
||||
|
||||
@@ -30,7 +30,7 @@ class HashMapChaining {
|
||||
|
||||
/* 负载因子 */
|
||||
func loadFactor() -> Double {
|
||||
Double(size / capacity)
|
||||
Double(size) / Double(capacity)
|
||||
}
|
||||
|
||||
/* 查询操作 */
|
||||
@@ -76,9 +76,10 @@ class HashMapChaining {
|
||||
for (pairIndex, pair) in bucket.enumerated() {
|
||||
if pair.key == key {
|
||||
buckets[index].remove(at: pairIndex)
|
||||
size -= 1
|
||||
break
|
||||
}
|
||||
}
|
||||
size -= 1
|
||||
}
|
||||
|
||||
/* 扩容哈希表 */
|
||||
|
||||
@@ -32,7 +32,7 @@ class HashMapOpenAddressing {
|
||||
|
||||
/* 负载因子 */
|
||||
func loadFactor() -> Double {
|
||||
Double(size / capacity)
|
||||
Double(size) / Double(capacity)
|
||||
}
|
||||
|
||||
/* 搜索 key 对应的桶索引 */
|
||||
|
||||
Reference in New Issue
Block a user