数据结构题解索引
一句话说明
这页更适合在你已经会基础算法之后,用来反查“某种数据结构通常怎么出题”。
数据结构专题
| 数据结构 | 高频题型 | 关键词 |
|---|---|---|
| 数组 | 去重、滑动窗口、前缀和 | 双指针、前缀统计 |
| 链表 | 反转、合并、环检测 | 虚拟头、快慢指针 |
| 栈 | 括号、表达式、单调栈 | 后进先出 |
| 队列 | BFS、窗口最值 | 分层、单调队列 |
| 树 | 遍历、递归、LCA | 前中后序、层序 |
| 哈希表 | 判重、计数、映射 | 空间换时间 |
| 堆 | Top K、中位数 | 优先队列 |
一个代表性 Go 模板:链表反转
func reverseList(head *ListNode) *ListNode {
var prev *ListNode
cur := head
for cur != nil {
next := cur.Next
cur.Next = prev
prev = cur
cur = next
}
return prev
}一个代表性 Go 模板:二叉树层序遍历
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return nil
}
result := [][]int{}
queue := []*TreeNode{root}
for len(queue) > 0 {
size := len(queue)
level := make([]int, 0, size)
for i := 0; i < size; i++ {
node := queue[0]
queue = queue[1:]
level = append(level, node.Val)
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
}
result = append(result, level)
}
return result
}使用建议
- 如果你卡在“这题该用什么结构”,先来这页定位
- 如果你已经知道结构,再回到对应算法页找细节模板
- 数据结构页更偏“载体”,算法页更偏“解法套路”
相关页面
返回:LeetCode题解