数据结构和算法
数据结构和算法课程,面向工程师算法与数据结构基础能力培养。
课程概述
本课程系统讲解数据结构和算法的核心概念与典型应用,从时间复杂度分析入手,逐步深入数组、栈、队列、链表等基础结构,结合 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 栈相关题目精讲