摘要:
一、算法简介 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。 若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。 若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待 阅读全文
摘要:
BFS模板: BFS使用队列,把每个还没有搜索到的点依次放入队列,然后再弹出队列的头部元素当做当前遍历点。BFS总共有两个模板: 模板1:如果不需要确定当前遍历到了哪一层,BFS模板如下。 1 while queue 不空: 2 cur = queue.pop() // 弹出队列的头部元素当做当前遍 阅读全文
摘要:
一、入门 动态规划的的四个解题步骤是: 定义子问题 写出子问题的递推关系 确定 DP 数组的计算顺序 (DP 数组也可以叫”子问题数组”,因为 DP 数组中的每一个元素都对应一个子问题。) 空间优化(可选) class Solution { public: int rob(vector<int>& 阅读全文
摘要:
记忆小技巧,看 ++ 的位置,如果 ++ 在前,就是先自加,再赋值,如果 ++ 在后,就是先赋值再自加。 #include<stdio.h> int main() { int i = 0; int j = ++i; printf("i=%d\tj=%d\n", i, j); return 0; } 阅读全文
摘要:
在做98. 验证二叉搜索树时,解决思路是中序遍历,判断当前节点是否大于中序遍历的前一个节点,如果大于,说明满足 BST,继续遍历;否则直接返回 false。 下面是中序遍历的非递归实现,借助了栈结构: 阅读全文