data structures & algorithms 记录遇到的一些有趣的算法问题 记录一些常见的数据结构 目录 二叉树 01.基本概念 01.二叉树定义 02.容易忘的三种非递归遍历 03.空间复杂度为O(1)的遍历方式 02.相关问题 01.二叉树的最近公共祖先 02.不同的二叉搜索树 II 03.验证二叉搜索树 04.恢复二叉搜索树 05.如何找到二叉树每一层得最右端结点 06.从有序链表构建平衡二叉树 07.二叉树中的最大路径和 08.二叉树的序列化与反序列化 动态规划 01.基本概念 02.三个背包走天下 0-1背包问题 完全背包问题 多重背包问题 03.不好惹的子序列问题 04.相关问题 01.不同的二叉树 02.扰乱字符串 03.最大矩形 04.交错字符串 05.不同的子序列 06.分割回文串II 07.单词拆分 08.最大正方形 09.最长上升子序列 10.最大子序和 11.动态规划之买股票的奇技淫巧 贪心算法 01.贪心算法与动态规划联系和区别 02.相关问题 01.加油站 02.分糖果 回溯法 01.基本概念 02.相关问题 01.组合总和 II——如何输出指定和的组合序列 02.组合_如何输出指定位数的组合数 递归方法 非递归方法 03.子集 04.子集 II 05.单词拆分 06.24点游戏 位运算 01.基本概念 02.相关问题 01.确定毒酒 02.格雷编码 03.只出现一次的数字 04.只出现一次的数字-II 05.开方函数 06.直线上最多的点数 数组 01.常见的排序算法 02.相关问题 01.删除排序数组中的重复项 02.下一个排列 03.最长有效括号 04.接雨水 05.最小覆盖子串 06.柱状图中最大的矩形 07.寻找旋转排序数组中的最小值 08.找最小谷最大峰算法——买卖股票的最佳时机 09.分区间排序策略 链表 01.访问链表的一些注意事项 02.如何在单链表中找中间结点 03.判断单链表是否有环 04.相关问题 01.k个一组翻转链表 02.删除排序链表中的重复元素-II 03.找有环链表的入环结点 04.O(nlogn)复杂度排序链表 05.堆排序合并K个排序链表 hash 01.哈希的实现方式及冲突解决方法 02.相关问题 01.最长连续序列 02.LRU缓存管理机制 03.直线上最多的点数 string 0.1比较版本号 0.2单词接龙II 0.3翻转字符串里的单词 0.4最长回文子串 0.5最短回文串