跳到主要内容

title: "常见错误"

常见错误

Mistake 1 — Treating dictionary keys like array indices

❌ "Dictionary key 只能是整数"

✅ Dictionary 的 key 可以是任何数据类型:string, integer, 甚至自定义类型

Key Point

字典不是数组。数组使用连续整数索引,字典使用任意唯一键。不能假定 key 的顺序有意义。


Mistake 2 — Assuming keys are stored in sorted order

❌ 在字典中按 key 升序遍历

✅ 字典不保证键的顺序(除非使用特定有序实现)


Mistake 3 — Forgetting unique key constraint

❌ "将两个相同 key 的不同 value 分别存入字典"

✅ 字典要求 key 唯一 — 重复添加相同 key 会覆盖原 value


Mistake 4 — Confusing time complexity of different operations

❌ "add 操作永远是 O(1)"

✅ 当需要先查找 key 时,add 的最坏情况也是 O(n)

// 错误思维
add → 只追加到末尾 → O(1)

// 正确思维
add → 先查找 key 是否存在
├── 存在 → 更新 values[i] (O(n) from search)
└── 不存在 → 追加到末尾 (O(1) + O(n) from search)

Mistake 5 — Incorrect shifting in array-based remove

❌ 移除元素后未将后续元素前移

✅ 数组实现中,remove 后必须将后面的元素全部左移一位,并递减 size

remove index 2:

Before: [A] [B] [C] [D] [E] size = 5
After: [A] [B] [D] [E] [ ] size = 4
↑ shift left

Mistake 6 — Linked list remove not handling head deletion

❌ 只用一种删除逻辑导致 head 节点无法正确删除

✅ 分两种情况:

// 删除 head 节点
IF previous = NULL THEN
head ← head.next
ELSE
previous.next ← current.next
ENDIF