数据结构与算法的Java实现
- Brute Force朴素匹配 O(n * m)
- Rabin Karp匹配算法 O(n),极端情况下会退化为O(n * m)
- Boyer Moore匹配算法 时间复杂度不超过O(3n)
- KMP匹配算法 O(n + m)
- Trie树,多模字符串匹配 构建Trie树时间复杂度为O(n),查找时间复杂度为O(k),k是查找串长度
- AC自动机,多模字符串匹配 匹配过程时间复杂度O(n)
- 二分查找
- 二叉树的最小深度 BFS算法。LeetCode 111
- 打开转盘锁 BFS算法。LeetCode 752
- 大数相乘
- 全排列 时间复杂度O(n!)。LeetCode 46
- N皇后问题 LeetCode 51
- 0-1背包问题 回溯算法,参照runBT函数
- 0-1背包问题 参照runDP函数
- 斐波那契数 LeetCode 509
- 零钱兑换 LeetCode 322
- 股票买卖
- 打家劫舍
- 最长递增子序列
- 最长公共子串
- 最小编辑距离
- 环形链表 LeetCode 141 参照hasCycle方法
- 环形链表 LeetCode 142 参照detectCycle方法
- 删除链表的倒数第N个结点 LeetCode 19 参照removeNthFromEnd方法
- 两数之和 II - 输入有序数组 LeetCode 167 参照twoSum方法
- 最小覆盖子串 LeetCode 76 参照minWindow方法
- 字符串排列 LeetCode 567 参照checkInclusion方法
- 找到字符串中所有字母异位词 LeetCode 438 参照findAnagrams方法
- 无重复字符的最长子串 LeetCode 3 参照lengthOfLongestSubstring方法