- 博客(5)
- 收藏
- 关注
原创 浅析类的“深拷贝”
㈠ new的基本知识:先说说new操作符:new有三种:new、operator new和placement new。 new是通过调用operator new这个库函数来实现内存分配的。new申请内存失败的话,会抛出异常std::bad_alloc,且返回值不为0,当然也可以指定不抛异常的new。直接new一个对象,对象是否初始化,与定义一个同类对象相似:new X; //调用类X的默认构造函数new X(x) //调用类X的构造函数用x来初始化。newint //变量未被初始化
2010-06-16 00:40:00 2765 1
原创 3.1_计算字符串移位包含问题
<br />3.1_计算字符串移位包含问题<br /> <br />这是一道字符串匹配题。不知道C库的strstr采用什么算法。<br />对字符串匹配,最低效的是暴力搜索。稍好的是KMP算法,效率最高的则是BM算法。<br />该题特殊在于:目标串长度是匹配串的两倍。Sunday算法虽然在实际应用中效率很高,但仅限于匹配串比较短时。BM的某一变种算法(基于suffix automaton)倒是实现了预处理和搜索都是0(n)的,但是实现起来有点复杂。<br /> 既然是判断是否移位包含,可以用两个数组,分
2010-06-15 23:13:00 1327
原创 微软面试题: 找出二叉树上任意两个结点的最近共同父结点。
<br /> <br />找出二叉树上任意两个结点的最近共同父结点。<br /> <br /> <br /> <br />要求两节点的最近共同父节点(LCA,lowest common ancestor),可以采用树的后序遍历。如果这两个节点不在一条线上,则它们必定分别在所求节点A的左子树和右子树上,后序遍历到第一个满足这个条件的节点就是所要求的节点A。另外,当这两个节点在一条线上,所求节点A则是这两个节点中层次最低的节点的父节点。<br /><br /><br />static bool lca(Node
2010-06-12 10:42:00 9098 7
原创 Trilogy公司的笔试题:用最少的步骤将数转为1
Trilogy公司的笔试题:如果n为偶数,则将它除以2,如果n为奇数,则将它加1或者减1。问对于一个给定的n,怎样才能用最少的步骤将它变到1。最简单的方法就是用DP。设f(n)为所用的最少步骤。根据定义可得:若n为偶数, f(n)=f(n/2) + 1;若n为奇数, f(n)= min(f(n-1), f(n+1)) +1 = min(f((n-1)/2), f((n+1)/2)) +2或者: f(2*k)=f(k)+1 f(2*k+1)=min(f(k),f(k+
2010-06-12 10:15:00 2057 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人