摘要:1.取上中位数 题目: 给定两个有序数组arr1和arr2,两个数组长度都为N,求两个数组中所有数的上中位数。要求:时间复杂度O(logN)。 例如: arr1 = {1,2,3,4}; arr2 = {3,4,5,6}; ...
阅读全文
摘要:题目: 判断某个二叉树是否为另外一个二叉树的子结构 思路: 先判断以当前根节点为根节点的二叉树是否和模板二叉树匹配。倘若不匹配。接着依次判断左右子树是否匹配 匹配函数先比较根节点,若根节点相等,则匹配2者的左右子树 代码: bool match(hea...
阅读全文
摘要:题目 合并已经排序的2条链表 思路 递归策略:对于每一层递归,寻找最小的节点,然后嵌套递归 非递归:定义两个指针,初始化指向头结点,比较指针并移动节点指向 代码 非递归: ListNode* mergeList(ListNode* List1,ListNode* List...
阅读全文
摘要:题目: 反转单向链表。如1---->2---->3为3--->2----->1 思路: 使用两个临时指针,依次反转。 代码: struct ListNode{ int m_nKey; ListNode* n...
阅读全文
摘要:double myPower(double base, int exponent){ if(exponent==0) return 1; if(exponent==1) return base; if(exponent==-1)//当为是负数的情况 return 1.0/base; do...
阅读全文
摘要:题目: 打印1到最大的n位数。如n=4,打印1-9999。 思路: 由于直接使用循环会导致int或者long long都不够存储。因此使用字符串来存储数据,这里涉及到数字转换成字符串以及字符串的加法。 代码: 1.使用递归思路。 ...
阅读全文
摘要:1.memset 原型: extern void *memset(void *buffer, int c, int count); 功能: 把buffer所指内存区域的前count个字节设置成字符 c。注意,memset始终按字节赋值, ...
阅读全文
摘要:1.字符过滤 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 【输入】 pInputStr: 输入字符串 lIn...
阅读全文
摘要:Generalized Low Rank Approximations of Matrices JIEPING YE*jieping@cs.umn.edu Department of Computer Science & Engineering,University of Minnesota...
阅读全文
摘要:题目: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个。 思路 (1).建立大顶堆,维度为数组的个数,这里为20(第一次 插入的是每个数组中最大的值,即第一个元素)。 ...
阅读全文
摘要:题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶 思路: 1.弹出并保存栈顶元素 2.递归,颠倒剩余的栈 3.将栈顶元素保存至栈底 ...
阅读全文
摘要:题目:输入一个正数n,输出所有和为n 连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。 1.思路 尊崇以下策略: (1)对于固定的left.当前sum值小于目标...
阅读全文
摘要:1.函数模板 函数模板为通用函数的描叙。 (1)模板函数不能缩短可执行的程序,仍将使用独立的函数定义。但是模板函数更加简单可靠 (2)可以重载函数模板,和一般重载一样,要求函数特征标(参数表相异),且能够参数表包含非模板参数如int等 (3)模板...
阅读全文
摘要:1.分别写一个宏和函数来获取元素个数如coute(a)会得到a数组元素个数 宏:#define coute(a) (a==NULL?0:sizeof(a)/sizeof(a[0])) //注意一定要使用()将函数体括起 求数组大小的模板函数: templateint cout...
阅读全文
摘要:1.最短路径概念 在一个无权的图中,若从一顶点到另一顶点存在着一条路径,则称该路径长度为该路径上所经过的边的数目,它等于该路径上的顶点数减1。由于从一顶点到另一顶点可能存在着多条路径,每条路径上所经过的边数可能不同,即路径长度不同,我们把路径长度最短(即经过的边数最少)的那条...
阅读全文
摘要:最小生成树: 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的无回路子集,使得的 w(T) 最小,且包含了全部顶点。则此T 为 G 的最小生成树。 最小...
阅读全文
摘要:1.new_delete与malloc_free ❶malloc/free: malloc原型: void *malloc(long NumBytes) 该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则...
阅读全文
摘要:1.继承方式 三种继承方式,public,private,protected。注意,继承方式是相对于某一层类的方法而言,并不是相对于子类的对象而言。对于外部世界()对象来说,protected和private相似。对于派生类来说,protected和public相似。 ...
阅读全文
摘要:题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。 例如:输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个...
阅读全文
摘要:假设基类base,派生类derive1,derive2. 其中前2者含有指针成员(自动分配内存),后者不含。 1.声明 三者声明如下: #include"iostream"#include"string"using namespace std;//含有动...
阅读全文
摘要:题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。 例如:输入两个字符串B...
阅读全文