# algorithm **Repository Path**: alfredchan168/algorithm ## Basic Information - **Project Name**: algorithm - **Description**: 数据结构与算法 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-03-27 - **Last Updated**: 2024-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 算法很美 Algorithm
算法与数据结构教程的源码归集。 Dxoca.cn ``` 《算法很美》课程学习指导手册 1.1 课程介绍 1.2 题解:如何找数组中唯一成对的那个数 1.3 找出落单的数,这样编程就对了 1.4 一题三解:计算二进制中1的个数 1.5 一条语句判断整数是不是2的整数次方 1.6 位运算思维:将整数的奇偶位互换 1.7 乘2挪整:二进制表示浮点实数 1.8 编程实践:出现k次与出现1次(上) 1.9 编程实践:出现k次与出现1次(下) 2.1 什么是递归 2.2 切蛋糕思维:递归知识练习题 2.3 多分支递归:裴波那契序列 2.4 巧用递推公式解最大公约数 2.5 别有洞天:递归形式进行插入排序 2.6 递归经典问题:汉诺塔游戏 2.7 二分查找的递归解法 2.8 思维更重要:希尔排序 2.9 利用“大O表示法”评估算法复杂度 2.10 常见函数的复杂度计算 2.11 性能对比:顺序查找与二分查找 2.12 大O法应用:基础排序算法的性能对比 2.13 难点突破:三种典型递归形式算法的性能分 2.14 希尔排序的性能玄机 2.15 分析10种排序算法的稳定性 2.16 解题实战:小白上楼梯(递归设计) 2.17 解题实战:旋转数组的最小数字(改造二分法) 2.18 题目详解:在有空字符串中的有序字符串数组中查找 2.19 题目详解:找出最长连续递增子序列 2.20 实战:快速设计一个高效的求a的n次幂的算法 3.1 分治法介绍及关键点解析 3.2 你需要掌握的快速排序算法 3.3 **之单向扫描分区法 3.4 **之双向扫描分区法 3.5 **之三指针分区法 3.6 **在工程实践中的优化 3.7 分治模式的完美诠释:归并排序 3.8 题解:调整数组顺序—奇数在左偶数在右 3.9 最快效率求出乱序数组中第k小的数 3.10 实战解题:哪个数字超过了一半? 3.11 趣味拓展:寻找发帖水王 3.12 实践:最小可用id是多少(上) 3.13 实践:最小可用id是多少(下) 3.14 讲2道关于逆序对的题目 3.15 基础学习:树、二叉树、堆排序 3.16 堆的概念及堆排序思路 3.17 将数组堆化的伪代码 3.18 堆排序的进一步完善 3.19 计数排序的学习 3.20 桶排序 3.21 基数排序 3.22 总结:10种排序算法的对比分析 3.23 相关题解:排序数组中找和的因子 3.24 计算需排序的子数组长度 3.25 知其然知其所以然:小顶堆与topK思路分析 3.26 实战:小顶堆与topK的具体代码实现 3.27 用计数排序解决员工年龄问题 3.28 天外有天:特殊排序 3.29 题解:判断数组的包含问题 4.1 基础题:顺时针打印二维数组 4.2 基础题:将0所在的行列清零 4.3 基础题:Z形打印二位数组 4.4 找出边界为1的最大子方阵 4.5 边界为1的最大子方阵优化(上) 4.6 边界为1的最大子方阵优化(下) 4.7 解题:编程返回子数组最大累加和 4.8 解题:求子矩阵最大累加和 4.9 矩阵运算 5.1 题解:判断字符串有无重复字符 5.2 题解:巧妙翻转字符串 5.3 走出思维误区:变形词问题 5.4 实践:替换字符串中的空格 5.5 题解:压缩字符串 5.6 题解:判断两字符串的字符集是否相同 5.7 题解:旋转词 5.8 题解:将字符串按单词翻转 5.9 题解:去掉字符串中连续出现的k次的0 5.10 题解:神奇的回文串 5.11 题解:最短摘要的生成 5.12 字符串匹配之PabinKarp(上) 5.13 字符串匹配之RabinKarp(下) 5.14 字符串匹配之KMP(上) 5.15 字符串匹配之KMP(下) 5.16 字符串匹配之后缀数组(上) 5.17 字符串匹配之后缀数组(中) 5.18 字符串匹配之后缀数组(下) 5.19 字符串应用:尺取法例题 5.20 字符串应用:next数组例题 5.21 后缀数组的应用(上) 5.22 后缀数组的应用(下) 6.1 巧用进制解决天平称重问题 6.2 经典数学问题:Nim游戏 6.3 阶梯Nim博弈问题 6.4 必备的求和公式,牢记! 6.5 欧几里得算法 6.6 欧几里得算法的扩展-裴蜀公式 6.7 欧几里得算法解一步之遥 6.8 求解同余方程的正确姿势 6.9 一维世界的爱情:青蛙的约会 6.10 特殊的同余方程—逆元 6.11 很有意思的同余方程组 6.12 素数的测试及质因数分解 6.13 素数的筛法 6.14 快速幂运算 7.1 本章预习材料 7.2 双管齐下解决递归问题 7.3 题解:机器人走方格问题 7.4 名企面试题:硬币表示某个给定数值 7.5 “逐步生成结果”之非数值型问题 7.6 题解:子集生成 7.7 子集生成之二进制法 7.8 全排列 (上) 7.9 全排列(中) 7.10 全排列(下) 7.11 闭式解举例 7.12 dfs例题:数独游戏 7.13 dfs竞赛例题:部分和 7.14 dfs竞赛例题解析:水洼数 7.15 回溯和剪枝:n皇后问题 7.16 dfs竞赛题解析:素数环 7.17 dfs竞赛题解析:困难的串 7.18 本章小结 8.1 本章预习材料 8.2 贪心策略简介及硬币支付问题 8.3 贪心策略例题:快速渡河问题 8.4 贪心策略例题:区间调度问题 8.5 贪心策略例题:区间选点问题 8.6 贪心策略例题:区间覆盖问题 8.7 贪心策略例题:字典序最小问题 8.8 几个背包相关的问题 8.9 涨姿势:乘船问题 8.10 总结:以上贪心策略例题的思路总结 8.11 动态规划简介及背包问题 8.12 动态规划例题:背包之dp解法 8.13 贪心策略问题:钢条切割 8.14 动态规划例题:数字三角形 8.15 动态规划例题:LCS(最长公共子序列) 8.16 动态规划例题:完全背包问题 8.17 著名问题:最长递增子序列(上) 8.18 著名问题:最长递增子序列(下) 8.19 本章小结