- 博客(21)
- 资源 (5)
- 收藏
- 关注
原创 每天一道算法题目(18)——取等长有序数组的上中位数和不等长有序数组的第k小的数
1.取上中位数 题目: 给定两个有序数组arr1和arr2,两个数组长度都为N,求两个数组中所有数的上中位数。要求:时间复杂度O(logN)。 例如: arr1 = {1,2,3,4}; arr2 = {3,4,5,6}; 一共8个数则上中位数是第4个数,所以返回3。
2015-06-30 21:38:01 952
原创 每天一道算法题目(17)——二叉树的子结构
题目: 判断某个二叉树是否为另外一个二叉树的子结构 思路: 先判断以当前根节点为根节点的二叉树是否和模板二叉树匹配。倘若不匹配。接着依次判断左右子树是否匹配 匹配函数先比较根节点,若根节点相等,则匹配2者的左右子树 代码: bool match(head1,head2)//匹配函数 { if(!head2) retur
2015-06-29 09:35:36 690
原创 每天一道算法题(16)——合并已排序的链表
题目 合并已经排序的2条链表 思路 递归策略:对于每一层递归,寻找最小的节点,然后嵌套递归 非递归:定义两个指针,初始化指向头结点,比较指针并移动节点指向 代码 非递归: ListNode* mergeList(ListNode* List1,ListNode* List2) { if(!List1) return List2;
2015-06-29 09:16:30 578
原创 每天一道算法题(16)——翻转链表
题目: 反转单向链表。如1---->2---->3为3--->2----->1 思路: 使用两个临时指针,依次反转。 代码: struct ListNode { int m_nKey; ListNode* next; }; ListNode* DeleteNode(ListNode* pLis
2015-06-26 15:41:01 510
原创 每天一道算法题(24)——自定义幂函数pow
double myPower(double base, int exponent){ if(exponent==0) return 1; if(exponent==1) return base; if(exponent==-1)//当为是负数的情况 return 1.0/base; double result=1.0; result=myPower(base,exponen
2015-06-25 16:13:54 1363
原创 每天一道算法题(15)——打印1到最大的n位数
题目: 打印1到最大的n位数。如n=4,打印1-9999。 思路: 由于直接使用循环会导致int或者long long都不够存储。因此使用字符串来存储数据,这里涉及到数字转换成字符串以及字符串的加法。 代码: 1.使用递归思路。 可以认为。从高位到低位,高位数先固定,在此情况下,低位数依次调整。每一位
2015-06-25 15:52:23 789
原创 memset,memcpy,strcpy的使用与区别
1.memset 原型: extern void *memset(void *buffer, int c, int count); 功能: 把buffer所指内存区域的前count个字节设置成字符 c。注意,memset始终按字节赋值, 说明: 返回指向buffer的指针。用来对一段内存空间全部设置为某个字符, memset可
2015-06-24 15:00:39 620
原创 2014华为机试之字符压缩字符过滤字符串加减法
1.字符过滤 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度 【输出】 pOutputStr: 输
2015-06-24 10:49:59 604
原创 Generalized Low Rank Approximation of Matrices
Generalized Low Rank Approximations of Matrices JIEPING YE* jieping@cs.umn.edu Department of Computer Science & Engineering,University of Minnesota-Twin Cities, Minneapolis, MN 55455, USA Publ
2015-06-18 17:06:01 1502
原创 每天一道算法题(14)——N个降序数组,找到最大的K个数
题目: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个。 思路 (1).建立大顶堆,维度为数组的个数,这里为20(第一次 插入的是每个数组中最大的值,即第一个元素)。 (2).删除最大堆堆顶,保存到数组或者栈中,然后向最大堆插入删除的元素所在数组的下一
2015-06-18 10:38:34 1664
原创 每天一道算法题(13)——使用递归颠倒栈
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶 思路: 1.弹出并保存栈顶元素 2.递归,颠倒剩余的栈 3.将栈顶元素保存至栈底 代码: //使用递归法,逆转栈 template bool reverseSta
2015-06-16 14:15:37 2083 1
原创 每天一道算法题(12)——和为n的连续正数序列或者随机数
题目:输入一个正数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值小于目标Sum,则right一直后移 (2).sum==Sum。则输出序列,且将right后
2015-06-15 15:03:32 608
原创 函数模板
1.函数模板 函数模板为通用函数的描叙。 (1)模板函数不能缩短可执行的程序,仍将使用独立的函数定义。但是模板函数更加简单可靠 (2)可以重载函数模板,和一般重载一样,要求函数特征标(参数表相异),且能够参数表包含非模板参数如int等 2.显式具体化 即提供模板的函数的某些具体化版本,当编译器找到与函数调用匹配的具体化定义时,将
2015-06-14 22:41:27 556
原创 答题总结(1)
1.分别写一个宏和函数来获取元素个数如coute(a)会得到a数组元素个数 宏:#define coute(a) (a==NULL?0:sizeof(a)/sizeof(a[0])) //注意一定要使用()将函数体括起 求数组大小的模板函数: template int coute(T (&a)[N]){ return sizeof(a)/sizeof(a[0]); }
2015-06-10 22:42:36 589
原创 顶点间最短路径长度之探寻算法
1.最短路径概念 在一个无权的图中,若从一顶点到另一顶点存在着一条路径,则称该路径长度为该路径上所经过的边的数目,它等于该路径上的顶点数减1。由于从一顶点到另一顶点可能存在着多条路径,每条路径上所经过的边数可能不同,即路径长度不同,我们把路径长度最短(即经过的边数最少)的那条路径叫做最短路径,其路径长度叫做最短路径长度或最短距离。 对于带权的图,考
2015-06-10 21:48:50 1440
原创 最小生成树
最小生成树: 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的无回路子集,使得的 w(T) 最小,且包含了全部顶点。则此T 为 G 的最小生成树。 最小生成树其实是最小权重生成树的简称。生成树和最小生成树有许多重要的应用。例如:要在n个城市之间铺设光
2015-06-09 17:50:39 624
原创 new与delete,malloc与free
1.new_delete与malloc_free ❶malloc/free: malloc原型: void *malloc(long NumBytes) 该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。申请了内存空间后,必须检查是否分配成功。 fre
2015-06-08 15:49:26 699 1
原创 C++的继承与接口
1.继承方式 三种继承方式,public,private,protected。注意,继承方式是相对于某一层类的方法而言,并不是相对于子类的对象而言。对于外部世界()对象来说,protected和private相似。对于派生类来说,protected和public相似。 public继承。派生类中,父类public和protected的成员可以直接访问,仍旧保持pub
2015-06-05 20:42:58 816
原创 每天一道算法题(11)——栈的push、pop 序列
题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。 例如:输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列 1.思路 (1)假设栈顶元素等于输出指针指向元素,弹出栈顶元素并后移输出指针;
2015-06-04 11:01:12 1175
原创 含动态分配内存的类的声明和定义以及继承
假设基类base,派生类derive1,derive2. 其中前2者含有指针成员(自动分配内存),后者不含。 1.声明 三者声明如下: #include"iostream" #include"string" using namespace std; //含有动态分配内存的基类 class base{ public: base(const char* pointer=N
2015-06-03 21:49:53 643
原创 每天一道算法题(5)——求2个字符串的最长公共子序列和最长公共子字符串
题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。 例如:输入两个字符串BDCABA 和ABCBDAB,字符串BCBA 和BDAB 都是是它们的最长公共子串,则 输出它们
2015-06-01 17:02:18 5048
OpencV2.4.6 API/Android/UseGuide/Titorials
2014-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人