基础算法:分治法
常用的基础算法之一,用于将很难处理的大问题,拆解成小问题处理,然后合并小问题的解,得到大问题的解
分治法的思想就是将不可能或者很难解决的问题,拆解成多个相似的子问题,然后将子问题拆解成更小粒度的子问题,直到这些小问题可以很容易的被解决,然后合并这些小问题的解以得到最终的解。
愿背井离乡、追寻梦想的你归来仍是少年
常用的基础算法之一,用于将很难处理的大问题,拆解成小问题处理,然后合并小问题的解,得到大问题的解
分治法的思想就是将不可能或者很难解决的问题,拆解成多个相似的子问题,然后将子问题拆解成更小粒度的子问题,直到这些小问题可以很容易的被解决,然后合并这些小问题的解以得到最终的解。
常用的基础算法之一,思想类似于分治法,不同点是子问题之间存在依赖,用来处理多阶段决策类问题
动态规划的思想类似于分支法,也是将待处理的问题拆分成多个子问题,按顺序求解子问题,前一个子问题的解为后一个子问题的求解提供了有用的信息。
常用的基础算法之一,用于求最优解,但不一定能得到全局最优解
贪心算法是在求解问题的时候,总是选择当前最优的解,不考虑全局最优解。
常用的基础算法之一,被称为通用解题方法
回溯算法其实是一种枚举算法(穷举法),是一种暴力解法,时间复杂度比较高。
AVL 树是一种高度平衡的二叉搜索树
最早出现的是二叉树,随后人们发现二叉树可以用来二分查找,所以出现了二叉搜索树。
LRU 算法是常用的缓存算法:最近最少被使用的缓存项将被淘汰掉
LRU(Least-recently-used):最近最少被使用的某个东西。最早使用在内存中,表示最近最少被使用的内存将会被释放。
Leetcode:#32 Longest Valid Parentheses,难度:困难
Leetcode:#10 Regular Expression Matching,难度:困难
Leetcode:#204 Count Primes,难度:简单
Leetcode:#5 Longest Palindromic Substring,难度:中等