- 博客(14)
- 收藏
- 关注
原创 几种典型的设计模式
//工厂模式#include using namespace std;static const double PI = 3.14;class Shape {public: virtual double Area() = 0; virtual ~Shape() {}};class Rectangle : public Shape {public: Rec
2015-05-22 22:02:57 483
原创 3.1.3 STL中list、map、vector的使用方法
(一)list的使用方法:代码:#include #include #include #include #include using namespace std;typedef list LISTINT;typedef list LISTCHAR;int main() { LISTINT listA; LISTINT::iterator it1;
2015-05-12 13:25:10 674
原创 3.1.2 函数模版与类模版
一、函数模版比较两个数的大小。代码:#include using namespace std;template inline int myCompare(const T &a, const T &b) { if(a > b) return 1; else if(a < b) return -1; else return 0;}int main()
2015-05-12 12:31:38 529
原创 4.7 蚂蚁爬杆
题目:有一根树枝,树枝很细,不能同时通过两只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。 当两只蚂蚁碰头时,它们会同时调头朝反方向走。 求所有蚂蚁都离开木杆的最短时间和最长时间。思想:虽然两只蚂蚁相遇后是调头往反方向走,但是,可以“看作”两个蚂蚁相遇后,擦身而过。 也就是说,可以认为蚂蚁的运动是独立的,是否碰头并不是重点。
2015-05-09 11:10:37 942
原创 4.4 点是否在三角形内
题目:给定一个三角形和一个点,判断这个点是否在三角形内。。第一种方法:面积相等法 如果点在三角形内部,则如果将三角形的三个顶点与这个点相连所得的三个小三角形的面积之和与原三角形的面积相等S(A,B,D) + S(A,C,D) + S(B,C,D) = S(A,B,C)第二种方法:向量叉积法 判断点P3是否在向向P1P2的左边,只需要通过两个向量P1P2、
2015-05-09 10:45:57 706
原创 3.10 分层遍历二叉树
题目1:写一个函数,打印二叉树中某层次的节点(从左到右),其中根节点为第0层。思路:利用递归算法,思想是:要求访问二叉树中第k层的节点,那么其实就是要访问“以该二叉树根节点的左右子节点为根节点的两颗子树”中层次为k-1的节点代码:struct pNode { int data; pNode *lChild; pNode *rChild;};int
2015-05-07 11:48:36 527
原创 3.9 重建二叉树
题目:给定一颗树的先序遍历结果和中序遍历的结果,重建这颗树。例如:前序:a b d c e f中序:d b a e c fa是根节点。思路:根据前序,可以很快找出根节点a,然后根据中序,可以找出根节点a的左右子树,然后递归求a的左子树前序b d跟中序d b,a的右子树前序c e f跟中序e c f即可代码:struct pNode
2015-05-07 11:05:58 555
原创 3.8 求二叉树中节点的最大距离
题目:把二叉树看成一个图,父子节点之间的连线看成是双向的,定义“距离”为两个节点之间的边数。求一颗二叉树中的两个节点之间的距离的最大值。方法一:用书上写的方法:代码:struct node { node *left; node *right; int nMaxLeft; int nMaxRight; cha
2015-05-06 22:16:33 667
原创 3.7 队列中取最大值操作问题
问题:假设有这样一个拥有3个操作的队列:1. EnQueue(v): 将v加入队列中2. DeQueue(): 使队列中的队首元素删除并返回此元素3. MaxElement: 返回队列中的最大元素设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能地低。方法:用两个栈来模拟队列在代码中,maxStackItemIndex代表栈中dui
2015-05-06 18:04:44 779
原创 3.6 编程判断两个链表是否相交
(一)题目:输入一个单项链表,找出该链表的倒数第k个节点。 解法:设立两个指针,先让第一个指针先往前走k步,然后第二个指针放到链表开头。 然后两个链表一起往后走,当第一个链表到达链表尾部的时候,后面那个链表所在的位置就刚好是链表的倒数第k个节点! 代码: struct node { int data; node *pNext;};node
2015-05-05 13:59:15 527
原创 3.5 最短摘要的声成
题目:Alibaba笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法String extractSummary(String description,String[] key words),目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子串,作为产品简介输出。(不限编程语
2015-05-05 11:07:23 585
原创 C++ STL中的哈希表 hash_map
在定义hash_map容器的时候,不仅需要指定键和值的类型,还需要指定hash函数和相等函数(一)hash_map 的hash函数hash到底是什么样子?看看源码:struct hashint> { size_t operator()(int __x) const { return __x; }};原来是个函数对象。在SGI S
2015-05-04 22:55:39 1562
原创 3.4 从无头单链表中删除节点
题目:有一个单链表,没有头指针,现在有一个指针指向这个链表的中间的一个节点,要求删除这个节点。方法:由于没有办法寻求指针去找到要删除的这个节点的前一个节点。 所以要另想办法。 设立新的指针指向要删除的节点的后一个节点,然后把这两个节点里面的数据换一下!然后删除要删除节点的后一个节点! 这样 就ok了!代码:void DeleteRan
2015-05-04 20:29:40 620
原创 3.3 计算字符串的相似度
题目:定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符(如把“a”替换为“b”); 2.增加一个字符(如把“abdd”变为“aebdd”); 3.删除一个字符(如把“travelling”变为“traveling”); 给定任意两个字符串,你是否能写出一个算法来计算它们的距离呢?方法:
2015-05-04 19:13:49 556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人