字串问题有个通用的滑动窗口算法,时间复杂度O(n2) 其中关键: 窗口大小不固定:构造合适的count来控制窗口的滑动。 窗口大小固定:使用left、right控制窗口移动。...
两个指针的问题:通过2个指针同步或不同步的移动,得到结果。时间复杂度一般会降低一个数量级。 适用于排好序的情况 86. Partition List 解析: 使用x进行划分,...
1. 位运算 2. 10进制进位,取余 3. 找规律题目 136. Single Number 利用取余操作的特性相同为0,不同为1。可以得出,只出现一次的数字。 137. ...
56. Merge Intervals 融合数组的重复部分。1. 对数组进行排序。 2. 依次判断结果数组中最后一个间隔的重叠情况。 147. Insertion Sort ...
查找的题目基本是二分查找,排序一般是快排或归并 快排套路是left = 0, right = x.size() - 1; while(low <= high); high =...
套路很深,就是遍历全部情况 定义解空间,包含全部解 利用深度优先搜索解空间 Trial,减枝。(避免访问不可能产生解的子空间) 而根据条件有选择的遍历,叫做剪枝或分枝定界。 ...
动态规划: 每一步都进行选择,依赖于子问题的解。通常使用自底向上求解,先求较小的子问题,然后是较大的子问题。 贪心: 每次找出局部最优解。 122. Best Time to...
分治方法 将问题划分成互不相交的子问题 递归地求解子问题 将子问题的解组合起来 动态规划(两个要素:最优子结构、子问题重叠) 应用于子问题重叠的情况,对于每个子问题求解一次,...
Divide: 将问题划分为一些子问题,子问题的形式和原问题一样,只是规模更小。 Conquer:递归地求解出子问题。如果子问题的规模足够小,则停止递归进行求解。 Combi...
树相关题目套路: 先序中序后序DFS其他遍历方式(如右左根)层序遍历 144. Binary Tree Preorder Traversal 返回先序遍历的结果。其中使用迭代...
链表题目是有套路的,如下4个方法: 链表逆序 (n个节点进行逆序,实际上循环进行n-1次)2个指针 (拆分、拼接、合并、求中点)链表成环使用额外空间保存 143. Reord...
41. First Missing Positive 找到第一个缺失的正整数,每个正整数放在n-1的下标上。 73. Set Matrix Zeroes 将矩阵中出现0的行和...
主要应用的是Hash Table 要对每种基础数据结构有深刻的理解。主要应对设计题: HashTable: 增、删、查都是O(1),但是是无序的 vector: 增(尾部增O...
什么情况使用栈? 利用栈的后进先出性质。 输入:数组,输出:与数组下标和元素都相关。而且栈中构成一定的顺序比如递增、递减,如果不满足则出栈进行计算。 需要注意的情况 搞清楚什...