数据结构题解索引

一句话说明

这页更适合在你已经会基础算法之后,用来反查“某种数据结构通常怎么出题”。

数据结构专题

数据结构高频题型关键词
数组去重、滑动窗口、前缀和双指针、前缀统计
链表反转、合并、环检测虚拟头、快慢指针
栈括号、表达式、单调栈后进先出
队列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题解