
面试宝典
文章平均质量分 61
gukesdo
这个作者很懒,什么都没留下…
展开
-
关于在一个序列中寻找中位数和第K大的数(在两个等长有序数组中寻找中位数)
现有两个数组A和B长度都为n,且每个数组中的元素都是升序排列,设计一个在时间空间上都尽可能高效的算法,来寻找两个数组整体上的中位数。1. Merge排序选择第n和n+1个即可,但是这个复杂度是O(2*n)的,空间是O(n+1)的,因为找到第n和n+1个停止即可,不需要继续进行归并。2. 败者树,其实这个在时间复杂度上没有优化也是O(2*n)的,但是在空间复杂原创 2012-10-09 11:16:44 · 3579 阅读 · 0 评论 -
C++类的const、static和const static数据成员的初始化
C++类的const、static和conststatic数据成员的初始化参考:http://blog.youkuaiyun.com/yjkwf/article/details/6067267http://www.cnblogs.com/gysm/archive/2011/09/16/2179277.html//const数据成员必须在构造函数初始化列表中初始化//static数据成员必须在全原创 2012-04-07 19:04:30 · 8964 阅读 · 2 评论 -
c++个java各自的优点
只是自己的一些总结:C++优点:速度快,较为底层,可以和c语言以及汇编混编提高效率;更加抽象,函数、类的编写可以和类型无关,这就是c++模板的威力(STL)。Java优点:跨平台,因为它运行在JRE上;没有指针内存管理更方便,有自动垃圾收集机制,显得更为健壮;在web应用上有其独特的优势;库是标准的,而c++一般都是第三方的;语法和上手都相对较快。原创 2012-04-23 22:36:42 · 1044 阅读 · 0 评论 -
从n个元素中选取第k大的元素,设计一个算法并说明算法复杂度
1.维护一个k大小的小顶堆,建堆的过程复杂度为k/2*logk,之后将之后的元素每个都和堆顶元素比较,如果比堆顶元素大则替换堆顶元素之后调整堆,每次调整堆的复杂度是logk,最坏情况是之后的都一个比一个大,这时复杂度为(n-k)*logk;所以总的时间复杂度就是(k/2+n-k)*logk=(n-k/2)*logk,空间复杂度为k2.使用败者树,维护一个k个节点的完全二叉树,第一次找出其中最小的原创 2012-04-24 15:13:10 · 3585 阅读 · 0 评论 -
使用链表实现队列
#ifndef _QUEUE_H#define _QUEUE_H#include using namespace std;class Queue{private: struct queueNode{ int data; queueNode *next; }; queueNode *front; queueNode *tail;public: Queue(); ~Qu原创 2012-05-03 20:47:15 · 777 阅读 · 0 评论 -
strstr的c语言实现
#include using namespace std;//和标准实现比较了一下,代码的简洁性和优雅型的确自愧不如//也没有考虑到str1是空串时候的情况,修正之后测试通过bool strpart(const char *str1, const char *str2){ const char *tmp1=str1; const char *tmp2=str2; if(*tmp1=原创 2012-05-04 16:17:22 · 929 阅读 · 0 评论 -
大数阶乘的一些经典问题解决
计算N!结果:首先实现利用字符串和vector实现大数的加法:两个字符串从最低位开始相加,把相加的结果存到char类型容器中,注意在相加的过程中设置一个进位符,直到较短的字符串相加完毕;之后把进位符加到较长的字符串余位即可,在加的过程中同时注意的还是进位符的加法。最后如果进位符大于0则放入char的vector中,这样生成的字符串是倒置的,需要reverse之后复制到字符串中返回即可。下面利用原创 2012-05-05 10:17:02 · 1038 阅读 · 0 评论 -
使用一维数组和二维数组来存储矩阵并进行乘法运算
#include using namespace std;int c[3][2]={0};int d[6]={0};//二维数组存储矩阵乘法void multi(int a[3][3], int b[3][2]){ for (int i=0;i<3;i++) //i代表a矩阵的行数 { for (int j=0;j<2;j++) //j代表b矩阵的列数 { for原创 2012-05-07 21:49:53 · 7528 阅读 · 0 评论 -
c语言实现strcmp和strcpy
strcpy的实现代码http://hi.baidu.com/zhouwei0213/blog/item/f3a9aebeca4e0a0d18d81fad.htmlchar * strcpy(char * strDest, const char * strSrc){ if ((strDest==NULL)||(strSrc==NULL)) //[1] throw转载 2012-05-07 22:25:42 · 5047 阅读 · 1 评论 -
判断单链表是否有环,如果有找出环的入口位置=>求两个相交链表的交点
http://beyrens.blog.163.com/blog/static/9589445220081013332452/首先如何判断一个链表是否有环:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如转载 2012-04-26 21:57:19 · 4392 阅读 · 0 评论 -
二叉树的链表实现
#ifndef _BINARYTREE_H#define _BINARYTREE_H#include #include #include using namespace std;template class BinaryTree{private: struct Node{ Node *left; Node *right; Type data; Node():le原创 2012-05-03 22:48:17 · 896 阅读 · 0 评论 -
Windows平台下的进程/线程的同步与互斥
Windows平台下的进程/线程的同步与互斥http://blog.youkuaiyun.com/bluemood1986/article/details/7221738http://www.cnblogs.com/vieri122/archive/2009/09/10/1564104.htmlhttp://hi.baidu.com/minyuanyang/blog/item/cd053a7354转载 2012-05-15 14:54:57 · 1807 阅读 · 0 评论 -
typedef和define的主要区别
typedef char* string_t;#define string_d char* //#define String_d char * 只是做了个简单的替换? typedef char *String_t 定义了一个新的类型 //主要区别在于这种使用方式String_t a,b;String_d c,d; a,b ,c都是char*类型,而d为char类型 // 翻译过来(char原创 2012-03-29 13:31:19 · 1213 阅读 · 0 评论 -
把1,4,5-8,9,89,11-14 => 1,4-9,11-14,89
//把1,4,5-8,9,89,11-14 => 1,4-9,11-14,89//思路:先把这个字符串使用strtok按照","记性分解;//把每个字符分解好的串中的"-"进行解析;//把解析之后的转成数字数组并排序//把排好序的数字数字连接成目标字符串#include #include #include #include #include using namespace std原创 2012-04-22 11:53:20 · 1363 阅读 · 0 评论 -
DNS解析顺序和递归非递归查询
顺序为:本地DNS缓存本地HOSTS文件DNS服务器在RFC1034 4.3.1中有这样的描述:•The simplest mode for the server isnon-recursive, since it can answer queries usingonly local information:the response contains an error, t原创 2012-04-18 16:58:09 · 4125 阅读 · 0 评论 -
TCP/IP的三次握手和四次分手以及超时机制
TCP/IP的三次握手和四次分手以及超时机制http://blog.youkuaiyun.com/bihailan123/article/details/7031463http://blog.youkuaiyun.com/whuslei/article/details/6667471 http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html转载 2012-05-17 22:41:21 · 4314 阅读 · 0 评论 -
已知二叉树的中序和前序序列(或后序)求解树
http://www.cnblogs.com/bmrs/archive/2010/08/19/SloveTree.html这种题一般有二种形式,共同点是都已知中序序列。如果没有中序序列,是无法唯一确定一棵树的。一、已知二叉树的前序序列和中序序列,求解树。1、确定树的根节点。树根是当前树中所有元素在前序遍历中最先出现的元素。2、求解树的子树。找出根节点在中序遍历中的位置,根左边的所有转载 2012-08-29 19:58:48 · 2053 阅读 · 0 评论 -
母牛产牛问题
http://topic.youkuaiyun.com/u/20120828/12/8336bd43-4a3c-4b77-bf17-2fa854c3702e.html一头母牛从出生后,每两年可以生下一头母牛,即在第二年和第四年分别可产下一头母牛,出生后第五年将会死去。假设农场现有一头母牛,N年后农场的母牛数目是多少,编写程序实现用五个数字或数组来记录当前岁数的牛的个数,每增长一年的时候都会年长一岁的个转载 2012-08-29 15:40:09 · 2359 阅读 · 0 评论 -
斐波那契数列的非递归实现
斐波那契数列就是每次最后两个数值相加构成下一个数值,递归定义如下:fibonacci 数列定义:n = 1,2 时,fib(n) = 1n > 2 时,fib(n) = fib(n-2) + fib(n-1)其非递归实现如下:int fabnacci(int n){int a = 1;int b = 1;int c = 1;if (n < 3){return 1;} for (原创 2011-06-08 20:53:00 · 1706 阅读 · 0 评论 -
c++中static成员函数和const成员函数特点
static成员函数的特性:(是和类关联而非和每个对象关联)1.static成员函数没有this指针。不属于某个对象故没有this指针。2.static成员函数不能被声明为const。3.static成员函数也不能被声明为虚函数。4.static成员函数可以直接访问所属类的static成员,但不能直接使用非static成员。5.访问的方式可以通过object.static_fu原创 2012-04-08 13:33:10 · 1564 阅读 · 0 评论 -
c语言实现itoa和atoi
开始自己写的时候只是一个简单的实现,没有考虑到前面可能有空格和正负号的问题,很不周全,之后进行了修正,同时补做了itoa,这个需要注意的就是正负号还有逆序,实现如下。其中要注意的技巧就是在求10的n次方时候的方法,不用单独写函数就可以实现;另外还有近期写代码时候用到的求n除以m的q次方时候的处理技巧。#include #include using namespace std;int原创 2012-04-18 10:45:39 · 3592 阅读 · 0 评论 -
面向对象思想解决的问题以及面向对象的三个特征
http://www.cnblogs.com/seesea125/archive/2012/04/03/2431176.html面向对象是为了解决系统的可维护性,可扩展性,可重用性。但是面向对象为什么可以解决这些问题呢?面向对象产生的历史原因有下面两点: 1、计算机是帮助人们解决问题的,然而计算机终究是个机器,他只会按照人所写的代码,一步一步的执行下去,最终得到了结果,因此无论程序多么的复杂转载 2012-04-23 22:12:41 · 4186 阅读 · 0 评论 -
const int& | int const& | const int* | int const* | int *const | const int *const的区分
//typedef和const联用的时候,const限定的是一个类型整体的常量性,如:typedef char* PSTR //const PSTR相当于char *const 而非 const char* //typedef也是一种存储类型限定符,所以typedef static int SINT是错误的 //参考http://zhidao.baidu.com/question/5878959原创 2012-04-08 11:16:58 · 2830 阅读 · 0 评论 -
求最大子序列和及其位置(四种经典方法)
算法部分#include #include using namespace std;//http://blog.163.com/kevinlee_2010/blog/static/169820820201010495438247///http://www.cnblogs.com/mingzi/archive/2008/07/22/1248793.html//http://www.ri原创 2012-04-18 09:31:42 · 5149 阅读 · 2 评论 -
http返回值及其意义
转自:http://www.cnblogs.com/gooliugle/archive/2010/10/29/1864687.html1xx:信息响应类,表示接收到请求并且继续处理2xx:处理成功响应类,表示动作被成功接收、理解和接受 3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理4xx:客户端错误,客户请求包含语法错误或者是不能正确执行5xx:服务端错误,服务器转载 2012-04-18 13:15:20 · 1372 阅读 · 0 评论 -
共有IP和私有IP以及IP地址的分类
公有和私有IP:A:一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从1.0.0.0到126.255.255.255。可用的A类网络有126个,每个网络能容纳1亿多个主机。B:一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络原创 2012-04-18 16:24:50 · 3662 阅读 · 0 评论 -
线程安全的理解和如何保证线程安全
线程安全的理解和如何保证线程安全http://www.cnblogs.com/mindsbook/archive/2009/10/15/thread-safety-and-GIL.html线程是在多线程环境下,线程安全能够保证多个线程同时执行程序时依旧运行正确,而且要保证对于共享数据,可以由多个线程存取,但是同一时刻只能有一个线程进行存取。一般通过加锁的方式来实现。加锁也分2种不同粒度转载 2012-05-15 15:39:03 · 10777 阅读 · 0 评论 -
海量数据处理
海量数据处理http://blog.youkuaiyun.com/v_JULY_v/article/category/1106578http://blog.youkuaiyun.com/v_july_v/article/details/7382693#http://blog.youkuaiyun.com/v_july_v/article/details/6685962处理海量数据时候常用的方法,因为在处理海量数据的时转载 2012-05-16 15:39:03 · 3150 阅读 · 0 评论 -
类的大小
注意到我这里显示声明了构造跟析构,但是sizeof(Base)的结果是1.因为一个空类也要实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空类的sizeof为1。而析构函数,跟构造函数这些成员函数,是跟sizeof无关的,也不难理解因为我们的size转载 2012-05-08 16:05:36 · 657 阅读 · 0 评论 -
输入两个字符串,比如abdcc和abc,输出第二个字符串在第一个字符串中的连接次序
#include #include #include using namespace std;typedef vector vInt;typedef vInt::iterator itInt;typedef vector pVint;typedef vector vvInt;//输入两个字符串,比如abdcc和abc,输出第二个字符串在第一个字符串中的连接次序//示例的结果应为:原创 2012-05-09 19:34:41 · 3222 阅读 · 0 评论 -
测试流程、测试理论、测试用例设计方法
测试流程、测试理论、测试用例设计方法单元测试---集成测试---确认测试(准则就是需求说明书是否严格符合)---系统测试(恢复测试、安全测试、强度测试、容量测试、性能测试、阿尔法和贝塔测试、安装测试和可用性测试);回归测试可能存在于每个测试环节中。黑盒测试又称功能测试、数据驱动测试或者基于规格说明的测试;白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。在进行单元测试的时候大都采用白盒测原创 2012-05-15 22:39:22 · 3526 阅读 · 0 评论 -
Malloc/new和delete/free的区别(百度2012实习生招聘)
Malloc/new和delete/free的区别http://blog.youkuaiyun.com/hackbuteer1/article/details/6789164http://blog.youkuaiyun.com/hackbuteer1/article/details/7542774相同点:都可用于申请动态内存和释放内存本质区别:malloc/free是C/C++语言的标准库函数,new/d转载 2012-05-17 14:59:43 · 1169 阅读 · 0 评论 -
如何减少换页错误?
http://blog.youkuaiyun.com/boluo1982107/article/details/42359031,进程倾向于占用CPU2,访问局部性(localiltyof reference)满足进程要求3,进程倾向于占用I/O4,使用基于最短剩余时间(shortestremaining time)的调度机制5,减少页大小 最先排除1和3选项,访问快慢、访问接口,转载 2012-05-07 15:54:00 · 12380 阅读 · 0 评论 -
最快的数组逆置和数组左旋算法
#include using namespace std;//最快的数组逆置和数组左旋算法//最快的数组逆置算法,复杂度为O(n/2)void rever(int a[],int size){ //i记录数组头,j记录数组尾 for (int i=0,j=size-1;i<j;i++,j--) { int tmp=a[i]; a[i]=a[j]; a[j]=tmp; }原创 2012-05-07 09:55:29 · 1801 阅读 · 0 评论 -
关于迷途指针
#include using namespace std;//迷途指针(面试宝典P78)int main(){ int *pInt=new int; *pInt=10; delete pInt; //pInt=NULL; //如果已经置为空,则这里会内存访问拒绝 //若没有置为空,也很危险,因为此时这块内存空间随时可能被其他程序占用 //从而造成不可预知的后果;没有为空则是原创 2012-05-09 10:04:06 · 906 阅读 · 0 评论 -
将数字字符串格式转换为原来字符串中出现的字符+该字符连续出现的次数的字符串P231
#include #include using namespace std;//将数字字符串格式转换为原来字符串中出现的字符+该字符连续出现的次数的字符串P231string func(string str){ //string strChar; //string strNum; string ret; int len=str.length(); for (int i=0;i<l原创 2012-05-29 10:53:56 · 2204 阅读 · 0 评论 -
f(n)是统计从1到n出现的1的次数的总和,输出从1到4000000000的所有f(n)=n的n的值P229
#include #include using namespace std;//f(n)是统计从1到n出现的1的次数的总和,输出从1到4000000000的所有f(n)=n的n的值//计算一个数字中1出现的个数int count1(int num){ int res=0; while (num) { if(num%10==1) res++; num=num/10;原创 2012-05-29 10:12:47 · 2313 阅读 · 2 评论 -
将一句话里的单词进行倒置,标点符号不倒换P228
#include #include using namespace std;//将一句话里的单词进行倒置,标点符号不倒换P228void rever(char *str){ int j=strlen(str)-1; int i=0; while (i<j) { char tmp=str[i]; str[i]=str[j]; str[j]=tmp; i++; j-原创 2012-05-29 09:38:12 · 2994 阅读 · 0 评论 -
c语言实现strstr
#include #include using namespace std;//c语言实现strstrconst char* isSub(const char* str, const char *subs){ //特殊情况 if(!*subs) return str; const char* tmp=str; while (*tmp!='\0') { //用于每次将父原创 2012-05-28 22:26:33 · 3309 阅读 · 0 评论 -
指针操作:加减、解引用、下标操作
#ifndef _TEST_H#define _TEST_H//关键之处在于://1.理解透彻指针即地址,地址可以记录一个数据类型的地址,同时指针也是一种//数据类型,所以指针也可以记录一个指针的地址。//2. Char*的特殊之处,直接打印的时候输出的应该是这个指针指向的一个字符串,//以’\0’标识字符串的结束#include #include #include #inc原创 2011-11-20 14:32:41 · 2590 阅读 · 0 评论