Skip to content

数据结构和算法

数据结构和算法课程,面向工程师算法与数据结构基础能力培养。

课程概述

本课程系统讲解数据结构和算法的核心概念与典型应用,从时间复杂度分析入手,逐步深入数组、栈、队列、链表等基础结构,结合 LeetCode 真题实战,提升算法思维与工程落地能力。

课程亮点

  • 复杂度分析: 时间频度、大 O 表示法、空间复杂度
  • 数组结构: 一维数组封装、二维数组、稀疏数组
  • 栈与队列: 顺序栈、链式栈、LeetCode 经典题解
  • 实战驱动: 五子棋存盘续盘、LeetCode 题目分类精讲

课程大纲

第一阶段:基础概念

  • 数据结构和算法基本概念
  • 时间频度与时间复杂度介绍
  • 大 O 表示法与常见复杂度对比
java
// 时间复杂度示例
public int sum(int n) {
    int total = 0;              // O(1)
    for (int i = 0; i < n; i++) // O(n)
        total += i;
    return total;
}
// 整体时间复杂度: O(n)

第二阶段:一维数组

  • 一维数组封装与操作
  • 增删改查实现与边界处理
  • 复杂度分析与动态扩容

第三阶段:二维数组与稀疏数组

  • 二维数组存储与遍历
  • 稀疏数组转换思路
  • 五子棋存盘续盘应用
java
// 稀疏数组转换示例
int[][] toSparse(int[][] chess) {
    int count = countNonZero(chess);
    int[][] sparse = new int[count + 1][3];
    sparse[0] = new int[]{chess.length, chess[0].length, count};
    int idx = 1;
    for (int i = 0; i < chess.length; i++)
        for (int j = 0; j < chess[i].length; j++)
            if (chess[i][j] != 0)
                sparse[idx++] = new int[]{i, j, chess[i][j]};
    return sparse;
}

第四阶段:栈

  • 栈的顺序与链式实现
  • 栈的应用场景:表达式求值、递归
  • LeetCode 栈相关题目精讲