摘要:
C++ 标准模板库STL 队列 queue 使用方法与应用介绍 queue queue模板类的定义在<queue>头文件中。 与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型。 定义queue对象的示 阅读全文
摘要:
http://www.cppblog.com/Darren/archive/2009/06/09/87224.html priority_queue用法 priority_queue 调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另 阅读全文
摘要:
1、 需要记忆的部分: 分治法的基本思想是将一个规模为n 的问题分解为k 个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解。 对于二叉树问题,首先需要熟练记住二叉树的前序中序遍历的递归版本和迭代版本,后序也可以看一下,记住BFS的实现过程 阅读全文
摘要:
1、二分搜索的模板。 算法面试中,如果需要优化O(n)的时间复杂度,那么只能是O(logn)的二分法。 注意二分法大多数情况都是适用于排序数组。自己写二分的时候经常忘记写return -1; http://www.lintcode.com/zh-cn/problem/first-position-o 阅读全文
摘要:
1、总结 链表类问题都是in-place,空间复杂度都是O(1)的,在所有的排序算法中,时间复杂度为O(nlogn)的有三个: 1)快速排序(不开辟空间); 2)归并排序(需要开辟O(n)的空间,但是在list问题上不开辟空间); 3)堆排序(首先需要有一个堆)。 while里面写判断条件的时候规律 阅读全文
摘要:
实际应用中可以按以下几个简化的步骤进行设计: (1)分析最优解的性质,并刻画其结构特征。 (2)递归的定义最优解。 (3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出最优值 (4)根据计算最优值时得到的信息,构造问题的最优解 动态规划基本框架: 阅读全文
摘要:
/*题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。*/ 1)递归到2的那一层currSum保存一个3,4的那一层保存一个currSum=7,这两个只是名字不一样,是在不同的子函数中的,所以不需要 阅读全文
摘要:
C++ stl队列Queue用法介绍:删除,插入等操作代码举例 queue 的基本操作举例如下: queue入队,如例:q.push(x); 将x 接到队列的末端。 queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。 访问queue队首元素,如例:q.fr 阅读全文
摘要:
/*题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
摘要:
/*题目描述,要注意边界问题 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10. 思路: 开始坐标(start,start),... 阅读全文