算法
目录介绍
- 01.专栏
- 02.数组
- 03.链表
- 04.栈
- 05.队列
- 06.树
- 07.递归
- 08.哈希
- 09.排序
- 10.查找
- 11.字符串
01.专栏
- 01.数据结构算法指引
- 02.数组深入浅出分析
- 03.链表设计思想和用途
- 04.链表实现Lrc原理
- 05.栈设计思想和原理
- 06.队列设计思想和原理
- 07.二叉树设计和用途
- 08.红黑树经典设计场景
- 09.图表设计思想和原理
- 10.递归经典设计场景
- 11.Hash常见操作实践
- 12.散列表设计思想和原理
- 13.排序的思想和优化
- 14.如何快速查找元素
- 15.如何设计工业级List
- 16.如何设计工业级Set
- 17.如何设计工业级Map
02.数组
- 01.用类实现一维数组
- 02.从数组中删除重复项
- 03.啤酒与饮料
- 04.二维数组中查找
- 05.数组中重复的数字
- 06.和为s的两个数字
- 07.数组中只出现一次数字
- 08.数组中只出现一次的数字
- 09.买卖股票最佳时机
- 10.调整数组顺序
- 11.找出常用的数字
- 12.旋转数组的最小数字
- 13.调整数组顺序使奇数位于偶数前面
- 14.顺时针打印矩阵
- 15.数组中出现次数超过一半的数字
- 16.最小的k个数
- 17.连续子数组的最大和
- 18.把数组排成最小的数
- 19.数组中的逆序对
- 20.在排序数组中出现的次数
- 21.滑动窗口的最大值
03.链表
- 01.单链表创建和使用
- 02.双链表创建和使用
- 03.循环链表创建和使用
- 04.用单向链表实现栈
- 05.合并两个排序的链表
- 06.将单链表反转
- 07.判断单链表是否有环
- 08.取出有环链表中环的长度
- 09.链表中环的入口结点
- 10.两个链表第一个公共结点
- 11.删除链表的倒数第N个节点
- 12.获得单链表倒数第k个结点
- 13.单链表中取出环的起始点
- 14.两个单链表相交第一个交点
- 15.复杂链表的复制
- 16.求单链表中节点的个数
- 17.从尾到头打印链表
04.栈
- 01.用两个栈实现队列
- 02.栈的压入弹出序列
- 03.使用栈解析数学公式
- 04.栈判断字符串是否回文
- 05.使用栈实现字符串逆序
- 06.判断括号是否匹配
05.队列
06.树
- 01.实现二叉树
- 02.重建二叉树
- 03.二叉搜索树后序遍历
- 04.从上往下打印二叉树
- 05.二叉树的深度
- 06.判断平衡二叉树
- 07.二叉树下一个结点
- 08.实现对称的二叉树
- 09.二叉树打印出多行
- 10.按之字形顺序打印二叉树
- 11.二叉搜索树第k个结点
- 12.二叉树的镜像
- 13.树的子结构
07.递归
- 01.斐波那契数列
- 02.找指定目录下所有文件
- 03.递归二分法查找
- 04.1+2+…+N和
- 05.100的阶乘
- 06.有序数组合并
- 07.求一个数乘方
- 08.背包问题
- 09.选择一支队伍
- 10.汉诺塔问题
09.排序
- 01.冒泡排序
- 02.插入排序
- 03.选择排序
- 04.快速排序
- 05.希尔排序
- 06.归并排序
- 07.堆排序
- 08.计数排序
- 09.桶排序
- 10.基数排序
- 11.线性排序案例
10.查找
- 01.按顺序查找元素
- 02.二分查找元素
- 03.插值查找元素
- 04.斐波那契查找元素
- 05.树表查找元素
- 06.分块查找元素
- 07.哈希查找元素
11.字符串
- 01.翻转字符串
- 02.字符串替换空格
- 03.把字符串转换成整数
- 04.回文字符串
- 05.字符串的排列
- 06.第一个只出现一次的字符
- 07.把字符串转换成整数
- 08.翻转单词顺序
- 09.左旋转字符串
- 10.表示数值字符串
- 11.查找最长公共前缀
- 12.第一个不重复的字符