自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 人生第一个offer也是最期望的offer(未完待更)

今晚(2013.10.13)接近9点收到offer通知。当时刚从金山软件的笔试考场走出来,看到有短信,一看,通知明天去给offer,当时兴奋的要死。(明天offer谈完了回来再更)

2013-10-13 23:53:56 1339 2

转载 用两个队列实现一个栈

题目:说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。解法:1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。2.现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。3.如果继续做push操作,比如插入d,f,则把d,f插入到

2013-10-08 20:39:01 1010

转载 B树、B-树、B+树、B*树

B树、B-树、B+树、B*树 B树       即二叉搜索树:(貌似二叉树直接叫二叉树而不叫B树;B树跟B-树都指B-树,即B树!!)       1.所有非叶子结点至多拥有两个儿子(Left和Right);       2.所有结点存储一个关键字;       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;       如:   

2013-10-06 19:41:37 704

转载 求一个已排序的数组中绝对值最小的元素

题目为:有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。这一题该如何求呢?初步的解决思路是:    1.数组中的元素全为正,取最左边的数字;    2.数组中

2013-10-06 15:00:54 705

原创 求最长不重复子串---O(n)

【题目】求字符串的的最长不重复子串,即子串中没有重复字符。例如“abcad”的最长。。。为“bcad”;“abca”的最长。。。为“abc”。。。void GetLongestNoRepeatedSubstring(char *str){ if (str==NULL || *str=='\0') { cout<<"Invalid Input"<<endl; return

2013-10-05 22:21:23 718

转载 判断单链表是否有环的相关问题

有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fas

2013-10-04 19:38:41 740

原创 给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合

【题目】给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合,例如t = 4, n = 6,这6个数为 [4, 3, 2, 2, 1, 1],这样输出就有4个不同的组合它们的加和为4: 4, 3+1, 2+2, and 2+1+1.  请设计一个高效算法实现这个需求。-----阿里2011实习生笔试题之前只是看了一下网上这个题的写法没自己动手写,以下为自己所写的程序。

2013-10-03 21:27:21 3397

原创 O(n^3)、O(n^2)和O(n)求最长回文子串

其实求最长回文子串就是求最长对称子串【法一】最容易想到的就是找出所有的子串(O(n^2)),判断每个字符是否对称(O(n)),所以总的时间复杂度是O(n^3)。【法二】法一是“从外向里”判断,相反,可以“从里向外”判断,时间复杂度O(n^2),代码如下void GetLongestSymmetircalSubstring(char *pStr){ int symmetric

2013-09-18 16:41:03 981

原创 创新工场2013.9.16笔试、9.17一面、9.18双选会

昨晚宣讲加现场笔试,笔试之前hr就说试卷会在当晚改出来,并在11:00~2:00之间给大家电话通知。回到宿舍我大概是11:50左右接到电话,通知今天一面。我9:35左右进去面,面了大概半小时吧。先说下昨晚笔试。【笔试 9.16】10道选择,3道编程。选择难度一般,就一个概率题当时死活没想起来怎么做,乱选了一个,结果错了。第一个编程是写堆排序;第二个是正整数开发,不能用函数sqrt(),要求

2013-09-17 10:58:51 1303

原创 顺时针/螺旋打印数组

程序如下void GenerateArrayClockwise(int m,int n){ int **a=(int**)(new int [m]);//动态分配存储空间 int i,j; for (i=0;i<m;i++) { a[i]=new int [n]; //申请得到数组a[m][n] } for (i=0;i<m;i++) //数组初始

2013-09-16 09:34:16 826

原创 求最长递增子序列

下面程序是用动态规划法写的void LIS(int *a,int n){ int *Lis=new int[n]; //存储以i为结尾的最长子序列,动态规划法 int *prev=new int[n]; //prev[]存储最长子序列的每一个值的“前驱”的下标值, //例如测试中的最长子序列1,4,8,10(下标分别为0,2,

2013-09-15 21:48:03 644

原创 创新工场笔试题----有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?

【题目】有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?代码如下void Combination(int *a,int index,int n,vector& vec){ if (n==0) { vector::iterator iter=vec.begin(); for (;iter!=vec.end();++it

2013-09-15 16:04:49 7945

原创 【锐捷笔试题】将整形变量a的最高n位清零,其它位不变,宏定义:#define clear_bits(a,n)

锐捷昨天的一道互联网C++笔试题,我的写法如下:#define clear_bits(a,n)  (a)&~(((1注:1、n应该加上括号,上面括号比较多,再写上比较混乱,所以没给n写上括号,大家写的时候记得加上;另外,宏定义所有变量最好都加上括号。        2、(1        3、((1        4、然后对上面结果取反~,即最高的n位置为0,其他位全为1;最后

2013-09-15 14:22:35 4142 3

原创 打印显示手机剩余电量

华为机试题,好吧,我都没收到上机通知。题目如下: 代码如下void PrintArray(char a[][12],int size){ int i,j; for (i=size-1;i>=0;i--) { for (j=0;j<size;j++) { cout<<a[i][j]; } cout<<endl; } }

2013-09-13 11:23:40 954

原创 求字符串的最长重复子串

int pstrcmp(const void* p,const void* q){ //qsort要用到,按字典序对子字符串排序 return strcmp(*(char**)p,*(char**)q);}int comlen(char* p,char* q){ //求相邻两个子字符串的公共部分 int len=0; while(*p&&*q&&(*p++==*q+

2013-09-11 21:02:53 657

原创 判断字符串是否为IP地址

bool IsIPAddress(const char *str){ if(str==NULL || *str=='\0' || *str=='.') //这个地方就不解释了 return false; int len=strlen(str); int i=0,j=0; //i用来控制循环,j用来指示数组arr[] int arr[4]; /

2013-09-10 17:17:09 1029

转载 堆排序中--建堆的算法复杂度分析O(n)

代码:[cpp] view plaincopyprint?templateclass T> inline void MaxHeap::make_heap(vector & v) {      if (heap_.size() != 0)          heap_.clear();      heap_ = v;        // start with last

2013-09-01 14:45:08 798

转载 C++经典面试题

1、int a=5,则 ++(a++)的值是()A、5      B、   6          C、7       D、逻辑错误a++返回的是一个临时变量,这里是右值,不能再前面++了2、下面的代码输出什么?(取地址运算符比+运算符的优先级要高)[cpp] view plaincopyprint?int main(void)  {      int  

2013-08-28 20:20:15 673

转载 非C++内建型别A和B, 在哪几种情况下B能隐式转化为A?

// Case 1 : B公有继承自A   class B : public A  {      ...  }  // Case 1 : B公有继承自Aclass B : public A{ ...}[cpp] view plaincopyprint?// Case 2 : B实现了隐式转化为A的转化   class B   {

2013-08-28 17:22:56 662

转载 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。  堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释

2013-08-26 11:14:59 657

转载 float与double的范围和精度

1. 范围  float和double的范围是由指数的位数来决定的。  float的指数位有8位,而double的指数位有11位,分布如下:  float:  1bit(符号位) 8bits(指数位) 23bits(尾数位)  double:  1bit(符号位) 11bits(指数位) 52bits(尾数位)  于是,float的指数范围为-127~+128,而dou

2013-08-23 19:21:49 521

转载 C++ stringstream的用法

使用stringstream对象简化类型转换C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。为什么要学习如果你已习惯了风格的转换,也许你首先会问:为什么要花额外的精力来学习基于的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换

2013-08-23 16:48:06 766

转载 c++ string操作

1、string类的构造函数eg:string(const char *s); // 用c字符串初始化string(int n, char c); // 用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1; string s2 = “hello”; 都是正确写法。当构造的string太长而无法表达时会抛出length_error异常,而

2013-08-23 15:15:24 509

转载 等概率随机函数的实现

题目:已知随机函数rand(),以p的概率产生0,以1-p的概率产生1,现在要求设计一个新的随机函数newRand(), 使其以1/n的等概率产生1~n之间的任意一个数。解决思路:可以通过已知随机函数rand()产生等概率产生0和1的新随机函数Rand(),然后调用k(k为整数n的二进制表示的位数)次Rand()函数,得到一个长度为k的0和1序列,以此序列所形成的整数即为1--n之间的数字。注

2013-08-21 21:10:50 675

转载 概率随机问题

1、问题定义可以简化如下:在不知道文件总行数的情况下,如何从文件中随机的抽取一行?   首先想到的是我们做过类似的题目吗?当然,在知道文件行数的情况下,我们可以很容易的用C运行库的rand函数随机的获得一个行数,从而随机的取出一 行,但是,当前的情况是不知道行数,这样如何求呢?我们需要一个概念来帮助我们做出猜想,来使得对每一行取出的概率相等,也即随机。这个概念即蓄水池抽样(Reservoir

2013-08-21 10:55:19 709

转载 腾讯笔试:把两个数和告诉A,积告诉B,求这两个数是什么

题目:1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少?分析:设和为S,积为M。首先,A:我不知道。说明:S可以分解成多个组合,而2=1+1,3=1+2,40=20+20,39=19+20,只有一种分解方式,因此S应属于[4,38]集合。其次,B:我也不知道。说明:M也可以分

2013-08-20 21:22:34 996

转载 C++中的空类,默认产生哪些类成员函数

一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,如果你写class Empty{};就相当于: class Empty{  public:  Empty(); // 缺省构造函数  Empty( const Empty& ); // 拷贝构造函数  ~Empty(); // 析构函数  Empt

2013-08-19 14:51:34 643

转载 一道笔试题:假设在n进制下,下面的等式成立,n的值是(),567*456=150216.

假设在n进制下,下面的等式成立,n的值是(),567*456=150216.完全是考数学的题目:http://topic.csdn.net/u/20100319/14/ffd0920a-b256-48d8-8d86-da36a3bfab8d.html做不出来也就算了,实际上,IT公司好多这样子的题目(腾讯除外),难怪考出来,成绩很差都可以进面试。这道题是google和淘宝的笔试题目,没

2013-08-18 11:21:48 1076

转载 腾讯笔试题:猜字游戏---猜1-100之间一个数字,最少多少次?第一次猜的数是几?

题目:A、B两人玩猜字游戏,游戏规则如下:A选定一个 [1,100]之间的数字背对B写在纸上,然后让B开始猜;如果B猜的偏小,A会提示B这次猜的偏小;一旦B某次猜的偏大,A就不再提示,此次之后B猜的偏小A也不会再提示,只回答猜对与否。请问:B至少要猜( )次才能保证猜对?在这种策略下,B第一次猜测的数字是()。解析:假设至少要猜x次。第一次猜的数

2013-08-16 21:12:41 14788

转载 malloc/free与new/delete的区别

相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不

2013-08-16 17:25:32 555

原创 数组循环左移k位

题目:把含有n个元素的数组循环左移K位,要求时间复杂度O(n)法一:时间复杂度O(n),空间复杂度O(n)         左移位数k 将数组a分成两部分,把数组a的后部分复制到数组tmp中的前面部分,把a的前面部分复制到tmp的后面部分,在把tmp的元素复制到a中void ArrayLeftShiftKBit(int *a,int n,int k){ if(a==NULL |

2013-08-14 20:25:35 1513

转载 求解1-n之间的素数

1、最常用的方法void PrintPrime(int n){ int i,j; for (i=2;i<=n;i++) { bool Ok=true; for (j=2;j<=sqrt(i);j++) { if (i%j==0) { Ok=false; break; } } if(Ok) cou

2013-08-14 19:32:09 509

原创 字符串转换为整数

bool isspace(char c){ if(c==' '||c=='\t' ||c=='\n'||c=='\v'||c=='\f'||c=='\r')  return true; return false;}bool StrToInt(char *str,int &num){ if(!str)   return false;  while(issp

2013-07-08 14:57:38 492

转载 C++中引用传递与指针传递区别

C++中引用传递与指针传递区别在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的:指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,

2013-07-04 10:53:38 603

转载 二叉树后序遍历(非递归)

二叉树的递归遍历算法就不用说了;在非递归算法中,后序遍历难度大,很多书上只给出思想或者几段无法直接调试的代码,甚至有些书上是错的,当时我在研究的过程中,就是按着书上错误的代码绕了好半天,几预抓狂。好在最终摸索出来了,不禁感叹很多出书人的水平真是......   这里将直接可以在编译器里调试的代码贴出来(在DEV-C++编译器中编译通过) 这里我们约定:空的节点用空格表示,按

2013-07-01 10:42:47 567

转载 二叉树的非递归遍历

1.先序遍历从递归说起void preOrder(TNode* root) {     if (root != NULL)     {         Visit(root);         preOrder(root->left);         preOrder(root->right);     } }递归算法非常的简单。先访问跟节点,然后访问左节点,再访问右节点

2013-06-28 16:37:39 521

转载 输入一个链表的头结点,从尾到头反过来输出每个结点的值

题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{     int       m_nKey;      ListNode* m_pNext;};分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点

2013-06-25 16:46:52 837

转载 有6种不同颜色的球,每种球有无数个。现在取5个球,求取出5、4、3、2种不同颜色球的概率分别为多少----网易游戏

题目:有6种不同颜色的球,分别记为1,2,3,4,5,6,每种球有无数个。现在取5个球,求在以下的条件下:  1、5种不同颜色,  2、4种不同颜色的球,  3、3种不同颜色的球,  4、2种不同颜色的球,  它们的概率。问题:1、5次分别是5种不同颜色的概率,2、取5次 4种不同颜色的概率,3、取5次 3种不同颜色的概率,   4、取5次2种不同颜色的

2013-06-25 11:08:39 4718

转载 整数转化成字符串; 字符串转换为整数

/*整数转化成字符串*/char *IntToStr(int num, char str[]){ int i = 0, j = 0; char temp[100]; while(num) { temp[i] = num % 10 + '0'; //取模运算得到从后往前的每一个数字变成字符 num = num / 10; i++; } temp[

2013-06-19 19:25:39 567

转载 谷歌面试题:数组元素移动交叉

题目:输入数组:{a1,a2,…,an,b1,b2,…,bn}, 在O(n)的时间,O(1)的空间将这个数组的顺序变为{a1,b1,a2,b2,a3,b3,…,an,bn}, 且不需要移动,通过交换完成,只需一个交换空间。解答:从结果入手,结果数组的中垂线两边分别a数组的一半和b数组的一半的混合,继续将子数组以中垂线划分下去,可以看到类似的规律,因此,可以使用类似的分治算法实现。注:其实这

2013-06-18 15:32:36 711

以太网汇报

关于以太网的汇报,对以太网做的概括

2011-11-23

实时以太网及协议

实时以太网的介绍和通信协议,通信标准等,欢迎下载

2011-10-30

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除