- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 "几乎已排序"问题——Is this (almost) sorted?
有大量的n个文件,确定他们是否正确地排序需要Ω(n)的时间。斯内普教授于是决定检查这些文件是否“已几乎排好序”。他想知道是否其中90%的论文已被正确排序:即能否能够去除其中的10%,并让剩下的列表进行排序?
2014-01-17 21:31:14
2250
原创 算法导论13-4:Treap
花了一晚上终于解决了《算法导论》13-4 中的思考题 Treap,之前学习的时候就发现这块的内容网上都找不到什么参考资料,面对a---j这几个思考题一筹莫展,今晚静下心来好好研究了下,发现也不是那么难啃。搞算法,就是要沉得住气。
2014-01-15 22:40:20
2466
原创 经常碰到的面试题
进程和线程进程:具有一定独立功能的程序的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.。线程:进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。关系: (1)一个线程只
2014-01-11 19:59:28
2983
1
原创 常见的二叉树面试题
面试中,最常见是数据结构就是二叉树和链表了,其中和二叉树有关的常见面试题主要是:树的前序遍历、中序遍历、后序遍历、分层遍历、树的节点数、树的叶子节点数、树的第K层节点数、树的深度、树的宽度、平衡二叉树的判定、完全二叉树的判定、满二叉树的判定,处理这些问题基本思想无外乎是“遍历+递归”。关于树的遍历,递归方式太傻太天真,但也是最基本的思想,实现代码可谓汗牛充栋,在此就不赘述了。下面仅列举了非
2013-12-26 14:54:37
1755
原创 2014年 IT 行业校招待遇
2014年 IT 行业校招待遇某人整理的2014校招IT行业薪酬待遇:注:本文所列薪酬待遇,如无特殊说明,均为京内(北京)研发类岗位硕士研究生待遇。 一、民企1.百度 13k*14.6,special 14~17k*14.6 开发类 13K*14.6 (2014) 测试类、前端类 12K*14.6
2013-12-23 08:34:43
6796
1
原创 顺时针打印矩阵
题目:给定一个矩阵,从外向内顺时针打印矩阵中的每一个数字。例如:给定矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16输出应该为:{1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10} 分析:这道题的意思非常直观,给人的感觉也
2013-11-23 16:54:49
1218
原创 C++笔试题(2),持续更新中……
1.本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy 很可能只能
2013-11-21 18:05:07
1539
原创 海康威视2014校园招聘C++笔试题
void fun(int a,int* b,int& c,int*& d){ a=0; *b=2; c=3; *d=4;}int _tmain(int argc, _TCHAR* argv[]){ int a=0; int* b=&a; int& c=a; int*& d=b; fun(a,b,c,d); cout<<a<<" "<<*b<<" "<<c<<" "<<
2013-11-12 21:27:45
4412
原创 最大子矩阵:二维数组的最大连续子数组和
上篇讲了一维的连续子数组和的最大值(编程之美错误分析),下面来分析二维数组的最大子数组和,亦称最大子矩阵,穷举法: //求二维数组的连续子数组之和的最大值 int MaxSum(int (*array)[N]) { int i,j; int MaxSum=-INFINITY;//初始化 int imin,imax,jmin,jmax; for(imin=1;im
2013-11-11 16:02:37
3589
原创 连续子数组和的最大值(编程之美错误分析)
输入一个N个元素的整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。 例如输入的数组为-9 -3 -2 2 -1 2 5 -7 1 5,和最大的子数组为2 -1 2 5。因此输出为该子数组的和8。 可是如果都是负数的话,要返回0?还是返回最小的负数?,这个数时候你要问问面试官(交流很重要)。 OK
2013-11-10 18:13:25
2508
原创 C++虚函数、虚继承、对象内存模型
一、虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于在运行时确定该对象应该调用哪一个虚函数。典型情况下,这一信息具有一种被称为 vptr(virtual table pointer,虚函数表指针)的指针的形式。vptr 指向一个被称为 vtbl(virtual table,虚函数表)的函数指针数组,每一个包含虚函数的类都关联到 vtbl。当一个对象调用了虚函数,
2013-11-09 00:48:47
5470
原创 C++关键字:mutable
关键字 mutable 是一个奇怪的修饰符(specifier),它只能够用于一个类的非静态数据成员。一个对象的状态由其非静态数据成员的值构成,因此,修改一个数据成员将会改变整个对象的状态。将一个成员函数声明为 const 能够保证它不会改变对象的状态。 然而在一些情况下,对象的逻辑状态与其物理状态之间可能有差别。例如,对于一个表示绘画图像的对象就存在这种情况。如果图像还没有更
2013-11-07 20:32:12
1116
原创 C++智能指针
智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函
2013-11-07 10:11:35
795
原创 贪心算法:N位数删除K个数字,使剩下的数字串最小
题目:一个n位的数,去掉其中的k位,问怎样去掉使得留下来的那个(n-k)位的数最大?分析:(删数问题,可用贪心算法求解),方法就是从简单入手,慢慢复杂。从n=1开始推导就会发现规律,现在假设有一个数,124682385,假如k = 1,则结果为12462385,k = 2,结果为1242385……可以知道:最优解是删除出现的第一个左边>右边的数,因为删除之后高位减小,很容易想...
2013-11-06 16:16:33
10694
2
原创 C++中构造函数和析构函数能不能被显示调用?
#include using namespace std;class A{public: A() { cout << "Default constructor is called./r/n"; } A(int ix) { cout << "Another constructor is called./r/n";
2013-11-04 22:33:08
1445
原创 《More Effective C++》条款26:限制某个Class所能产生的对象数量
问题来源:假设系统中只有一台打印机,如何把打印机对象数止限定为一个。或者系统只提供16个可分发出去的文件描述符,如何确保文件描述符对象存在的数目不能超过16个。在具体的应用过程中,我们可能需要限制某个类所产生的对象数量。下面我们先从简单的问题的开始。1.如何允许建立零个对象? 实例化一个对象时,将调用一个构造函数,因而阻止建立某个类的对象,最容易的方法就是把该类的
2013-11-04 21:15:34
1112
原创 C++笔试题(1),持续更新中……
重拾C++经典笔试30题(1-10)1. /*----------------统计10进制转化为2进制1的个数-----------------[cpp] view plaincopy"font-size:14px;">int total2Cnts(int x) { int count = 0;
2013-11-03 17:42:08
1698
原创 小米面试题:N对括号的所有合法状态
1、传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态。因此有必要增强网络层提供服务的服务质量。2、引入传输层的原因 面向连接的传输服务与面向连接的网络服务类似,都分为建立连接、数据传输、释放连接三个阶段;编址、寻址、流控制也是类似的。无连接的传输服务与无连接的网络服务也非常类似。一个很显然的问
2013-11-03 17:35:08
1701
原创 《Effective C++ 》条款9:永远不要在构造函数或析构函数中调用虚函数
我想以重复本文的主题开篇:不要在类的构造或者析构函数中调用虚函数,因为这种调用不会如你所愿,即使成功一点,最后还会使你沮丧不已。如果你以前是一个Java或者C#程序员,请密切注意本节的内容-这正是C++与其它语言的大区别之一。 假设你有一个为股票交易建模的类层次结构,例如买单,卖单,等等。为该类交易建立审计系统是非常重要的,这样的话,每当创建一个交易对象,在审计登录项上就生成一个适当的入
2013-11-02 21:55:33
12601
1
原创 字符串匹配:KMP算法
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上
2013-11-01 20:59:02
795
转载 完美世界2013校园招聘笔试题
1、设有矩阵A1(30*35)、A2(35*15)、A3(15*5)、A4(5*10),M=A1*A2*A3*A4,下列组合计算M所需数乘次数最少的是:A、(A1(A2(A3A4))) B、(A1((A2A3)A4)) C、((A1A2)(A3A4)) D、((A1(A2A3))A4) E、(((A1A2)A3)A4)2、在32位机器上,有如下代码:
2013-11-01 20:38:28
1493
原创 合并K个有序链表O(N lgK)
问题:在O(N lgK) 时间内合并K个有序链表, 这里N指的是K个链表中所有的元素个数。这题的思路如下:1 ) 在每一个链表中取出第一个值,然后把它们放在一个大小为K的数组里,然后把这个数组当成heap,然后把该堆建成最小堆。O(K)2 )取出堆中的最小值(也是数组的第一个值),然后把该最小值所处的链表的下一个值放在数组的第一个位置。如果链表中有一个已经为空(元素已经都被
2013-11-01 19:38:51
1792
原创 c++中内存分配方式
一个由C/C++编译程序占用内存分为以下几个部分1、栈区(stack):由编译器自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。2、堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,它与数据结构中堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static):全局变量和静态变量存储是放在一块,初始化全局变量和静态变
2013-11-01 19:03:33
1181
原创 动态分配、删除二维数组
装X犯分两种:装得好的和装得不好的。如果装X装得好,其实也挺牛X,但如果装X装得不好,那就还不如直接干脆的傻X。 在电影导演里,王家卫是一个装X装得好的例子(实际上他是一个天才的装X导演),娄烨、张元之流是装X装得不好的例子。在电影演员里,约翰.马尔科维奇是最伟大的装X演员,装X装得非常酷,汤姆.克鲁斯则是装X装得不好的例子,装得不好的还有谢霆锋、基努.里维斯这样的货色。在音乐人里,喜多郎、达
2013-10-29 21:57:33
1049
原创 网易2014校园招聘2013.10.10杭州笔试题
1. #include 和#include “filename.h” 有什么区别? 答:对于#include ,编译器从标准库路径开始搜索filename.h 对于#include “filename.h”,编译器从用户的工作路径开始搜索filename.h2. 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”? 答:C++语言支持函数重载,C 语
2013-10-27 11:03:22
3452
原创 《More Effective C++》条款27:如何让类对象只在栈(堆)上分配空间?
昨天一个同学去网易面试C++研发,问到了这么一个问题:如何限制一个类对象只在栈(堆)上分配空间?一般情况下,编写一个类,是可以在栈或者堆分配空间。但有些时候,你想编写一个只能在栈或者只能在堆上面分配空间的类。这能不能实现呢?仔细想想,其实也是可以滴。在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。
2013-10-26 21:27:41
9249
4
原创 单链表的快速排序
快速排序的算法思想是:确定一个枢轴元素,通过一趟排序将待排关键字分成两个部分,其中一部分元素均比枢轴元素小,另一部分元素均比枢轴元素大,这样的一趟排序称为快速排序的一次划分。再对两个部分分别再递归进行划分操作,最后获得的序列就是排好序的关键字序列。快排算法的实现中采用的存储结构是数组,采用数组有一个好处,就是待排元素可以随机存取。而以单链表方式存储的待排序列就无法随机存取元
2013-10-25 20:57:24
1846
原创 1024! 末尾有多少个0?
先把答案贴出来,具体证明在下面……末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。是5的倍数的数有: 1024 / 5 = 204个是25的倍数的数有:1024 / 25 = 40个是125的倍数的数有:1024 / 125 = 8个是625的倍数的数有:1024 / 625 = 1个所以1024!
2013-10-25 20:09:28
4557
原创 Trie树
一、知识简介 字符串算法中字典树、AC自动机和后缀树的应用是最广泛的了。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。 Trie 的强大之处就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(k) ,其中 k 为 ke
2013-10-25 19:11:17
793
原创 Linux僵尸进程
我们知道,在Unix进程模型中,进程是按照父进程产生子进程,子进程产生子子进程这样的方式创建出完成各项相互协作功能的进程的。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。如果父进程没有这么做的话,会产生什么后果呢?此时,子进程虽然已经退出了,但是在系统进程表中还为它保留了一些退出状态的信息,如果父进程一直不取得这些退出信息的话,这
2013-10-25 18:16:23
993
原创 分治法求最近点对
问题描述:给定平面上N个点的坐标,找出距离最近的两个点。 这是编程之美2.11的一道题目,从昨天到现在就一直在设法解决它;如果用常规的解法,只需要将N个点两两计算距离,然后找出最小距离的两个点就可以了;但是这种解法的算法复杂度为O(N^2); 为了降低算法的复杂度,我们需要有更好的方法。这里我们找到的解法是分治法。设点集为S,|S|=N,S的横坐标集合为Sx,纵坐标集
2013-10-24 21:55:27
2037
2
原创 迅雷2014校园招聘笔试题
温馨提示:客观题和主观题得分都要超过一定标准,才能获得面试资格,如果一项得分很高,而另外一项得分很低,可能无法获得面试资格。一、单选题(20题,每题2分)1、有变量int i = 0; int a = i++; int b=++a; int c = a+b; 请问表达式 a?b:c 的值是()A、0 B、1 C、2
2013-10-24 18:53:08
975
转载 腾讯2014校园招聘笔试试题
试卷类型:软件开发A1考试时长:120分钟一 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA2 下列哪两个数据
2013-10-24 18:40:11
1711
转载 百度2011.10.16校园招聘会笔试题
一、算法设计1、设rand(s,t)返回[s,t]之间的随机小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间复杂度分析。2、为分析用户行为,系统常需存储用户的一些query,但因query非常多,故系统不能全存,设系统每天只存m个query,现设计一个算法,对用户请求的query进行随机选择m个,请给一个方案,使得每个query被抽中的概率相等,并分析之,注意:不到最后一刻
2013-10-24 18:35:40
797
原创 二叉树中节点的最大距离
问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。《编程之美》的解法书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到右子树的最深节点。情况
2013-10-24 13:25:42
1130
学生公寓管理系统源代码
2010-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人