10 2011 档案
【整理】Bit-map/Bloom-filter
摘要:Bit-map:用一个bit位来标记某个元素对应的Value, 而Key即是该元素,由于采用了Bit为单位来存储数据,在存储空间方面可以大大节省。 假设要对0-7内的5个元素(4,7,2,5,3)排序(假设没有重复),就可采用Bit-map的方法来达到排序的目的。要表示8个数,只需要8个Bit(1Bytes),首先我们开辟1Byte的空间,将这些空间的所有Bit位都置为0(如下图:) 然后遍历这5个元素,首先第一个元素是4,那么就把4对应的位置为1(可以这样操作 p+(i/8)|(0×01<<(i%8)) ,当然了这里的操作涉及到Big-ending和Little-end 阅读全文
posted @ 2011-10-30 22:38 白草黒尖 阅读(1549) 评论(1) 推荐(0)
【转帖】设计包含min函数的栈
摘要:转自:zhedahht.blog.163.com/blog/static/25411174200712895228171/ 题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放最小元素(或最小元素的位置)。每次push一个新元素进栈的时候,如果该元素比当前的最小. 阅读全文
posted @ 2011-10-28 22:04 白草黒尖 阅读(1149) 评论(0) 推荐(0)
【转帖】在二元树中找出和为某一值的所有路径
摘要:转自:http://zhedahht.blog.163.com/blog/static/254111742007228357325/ 题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。 例如输入整数22和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12和10, 5, 7。 二元树结点的数据结构定义为:struct BinaryTreeNode // a node in the binary tree{ int m_nValue; //... 阅读全文
posted @ 2011-10-28 21:45 白草黒尖 阅读(253) 评论(0) 推荐(0)
【转帖】查找最小的k个元素(最大堆)
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420072432136859/ 题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。 分析:这道题最简单的思路莫过于把输入的n个整数排序,这样排在最前面的k个数就是最小的k个数。只是这种思路的时间复杂度为O(nlogn)。我们试着寻找更快的解决思路。 我们可以先创建一个大小为k的数据容器来存储最小的k个数字。接下来我们每次从输入的n个整数中读入一个数。如果容器中已有的数字少于k个,则直接把这次读入的整数放入容器之中;. 阅读全文
posted @ 2011-10-28 19:32 白草黒尖 阅读(878) 评论(0) 推荐(0)
【转帖】圆圈中最后剩下的数字
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420072250322938/ 题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。 分析:本题就是有名的约瑟夫环问题。既然题目有一个数字圆圈,很自然的想法是我们用一个数据结构来模拟这个圆圈。在常用的数据结构中,我们很容易想到用环形列表。我们可以创建一个总共有m个数字的环形列表,然后每次从这个列表中.. 阅读全文
posted @ 2011-10-28 19:16 白草黒尖 阅读(317) 评论(0) 推荐(0)
【转帖】含有指针成员的类的拷贝
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200722710364233/ 题目:下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。template<typename T> class Array{public: Array(unsigned arraySize):data(0), size(arraySize) { if(size > 0) data = new T[size]; } ~Array() { ... 阅读全文
posted @ 2011-10-28 18:42 白草黒尖 阅读(185) 评论(0) 推荐(0)
【转帖】O(logn)求Fibonacci数列
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200722991933440/ 题目:定义Fibonacci数列如下: /0n=0 f(n)= 1n=1 \f(n-1)+f(n-2)n=2 输入n,用最快的方法求该数列的第n项。 分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。因此很多程序员对这道题的递归解法非常熟悉,看到题目就能写出如下的递归求解的代码。long long Fibonacci_Solution1(unsigned int n){ int result[2] = {0,... 阅读全文
posted @ 2011-10-28 17:08 白草黒尖 阅读(230) 评论(1) 推荐(0)
【转帖】最长公共子序列
摘要:转自:http://zhedahht.blog.163.com/blog/static/254111742007376431815/ 题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子串,则输出它们的长度4,并打印任意一个子串。 分析:求最长公共子串(Longest Common Subsequence, . 阅读全文
posted @ 2011-10-28 16:47 白草黒尖 阅读(217) 评论(0) 推荐(1)
【转帖】和为n连续正数序列
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200732711051101/ 题目:输入一个正数n,输出所有和为n连续正数序列。 例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。 分析:这是网易的一道面试题。 这道题和本面试题系列的第10题有些类似。我们用两个数small和big分别表示序列的最小值和最大值。首先把small初始化为1,big初始化为2。如果从small到big的序列的和大于n的话,我们向右移动small,相当于从序列中去掉较小的数字。如果从small到bi. 阅读全文
posted @ 2011-10-28 12:24 白草黒尖 阅读(212) 评论(0) 推荐(0)
【转帖】从尾到头输出链表
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420079237185699/ 题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode { int m_nKey; ListNode* m_pNext;}; 分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。 看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的指针反转过来,改变链表的方向。然后就可以从头到尾输出了。反转链表的算法详见本人面试题... 阅读全文
posted @ 2011-10-27 23:39 白草黒尖 阅读(264) 评论(0) 推荐(0)
【转帖】找出数组中两个只出现一次的数字
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420071128950682/ 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 分析:这是一道很新颖的关于位运算的面试题。 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己都等于0。也就是说,如. 阅读全文
posted @ 2011-10-27 22:50 白草黒尖 阅读(207) 评论(0) 推荐(0)
【转帖】寻找丑数
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420094245366965/ 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。 所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;如果能被3整除,. 阅读全文
posted @ 2011-10-27 22:12 白草黒尖 阅读(211) 评论(0) 推荐(0)
【转帖】输出1到最大的N位数
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420094279426862/ 题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。 分析:这是一道很有意思的题目。看起来很简单,其实里面却有不少的玄机。应聘者在解决这个问题的时候,最容易想到的方法是先求出最大的n位数是什么,然后用一个循环从1开始逐个输出。很快,我们就能写出如下代码:// Print numbers from 1 to the maximum number with n digits, in ordervoid P. 阅读全文
posted @ 2011-10-27 19:32 白草黒尖 阅读(1011) 评论(0) 推荐(0)
【转帖】颠倒栈
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200943182411790/ 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。 分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中的所有元素逐一push进入栈。这时栈也就颠倒过来了。颠倒一个数组是一件很容易的事情。不过这种思路需要显示分配一个长度为O(n)的数组,而且也没有充分利用递归的特性。 我们再来考虑怎么递归。我们把栈{1, . 阅读全文
posted @ 2011-10-27 16:50 白草黒尖 阅读(282) 评论(0) 推荐(1)
【转帖】扑克牌的顺子
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200951262930831/ 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。 分析:这题目很有意思,是一个典型的寓教于乐的题目。我们需要把扑克牌的背景抽象成计算机语言。不难想象,我们可以把5张牌看成由5个数字组成的数组。大小王是特殊的数字,不妨把它们都当成0,这样和其他扑克牌代表的数字就不重复了。 接下来我们来分析怎样判断5个数字是不是连续的。最直观的是,我们把数组排序。但值. 阅读全文
posted @ 2011-10-27 16:37 白草黒尖 阅读(509) 评论(0) 推荐(1)
【转帖】把数组排成最小的数
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200952174133707/ 题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。 分析:这是09年6月份百度新鲜出炉的一道面试题,从这道题我们可以看出百度对应聘者在算法方面有很高的要求。 这道题其实是希望我们能找到一个排序规则,根据这个规则排出来的数组能排成一个最小的数字。要确定排序规则,就得比较两个数字,也就是给出两个数字m和n,我们需要确定. 阅读全文
posted @ 2011-10-27 16:16 白草黒尖 阅读(1802) 评论(0) 推荐(0)
【转帖】旋转数组的最小元素
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174200952765120546/ 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 分析:这道题最直观的解法并不难。从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性,我们应该能找到更好的解法。 我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面. 阅读全文
posted @ 2011-10-27 15:59 白草黒尖 阅读(311) 评论(0) 推荐(0)
【转帖】n个骰子的点数
摘要:转自:http://zhedahht.blog.163.com/blog/static/254111742009101524946359/ 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 分析:玩过麻将的都知道,骰子一共6个面,每个面上都有一个点数,对应的数字是1到 6之间的一个数字。所以,n个骰子的点数和的最小值为n,最大值为6n。因此,一个直观的思路就是定义一个长度为6n-n的数组,和为S的点数出现的次数保存到数组第S-n个元素里。另外,我们还知道n个骰子的所有点数的排列数6^n。一旦我们统计出每一点数出现的次数之后,因此只要把每一点. 阅读全文
posted @ 2011-10-27 15:27 白草黒尖 阅读(1752) 评论(0) 推荐(0)
【转帖】数值的整数次方
摘要:转自:http://zhedahht.blog.163.com/blog/static/254111742009101563242535/ 题目:实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。 分析:这是一道看起来很简单的问题。可能有不少的人在看到题目后30秒写出如下的代码:double Power(double base, int exponent){ double result = 1.0; for(int i = 1; i <= exponent; ++i) ... 阅读全文
posted @ 2011-10-27 14:41 白草黒尖 阅读(298) 评论(0) 推荐(0)
【转帖】Singleton Pattern
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420105146828433/ 题目:设计一个类,我们只能生成该类的一个实例。 分析:只能生成一个实例的类是实现了Singleton模式的类型。 由于设计模式在面向对象程序设计中起着举足轻重的作用,在面试过程中很多公司都喜欢问一些与设计模式相关的问题。在常用的模式中,Singleton是唯一一个能够用短短几十行代码完整实现的模式。因此,写一个Singleton的类型是一个很常见的面试题。 事实上,要让一个类型是能创建一个实例不是一件很难的事情。我们可以把该类型的构造函数设为private,. 阅读全文
posted @ 2011-10-27 13:02 白草黒尖 阅读(296) 评论(0) 推荐(0)
【转帖】对称子字符串的最大长度
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174201063105120425/ 题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。 要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不相等,那该字符串肯定不是对称的。否则我们接着判断里面的两个字符是不是相等,以此类推。基于这个思路,我们不难写. 阅读全文
posted @ 2011-10-26 23:01 白草黒尖 阅读(312) 评论(0) 推荐(1)
【转帖】二叉树两个结点的最低共同父结点
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174201081263815813/ 题目:输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。二叉树的结点定义如下:struct TreeNode{ int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight;}; 分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题,这个问题至少有两个变种: 第一变种是二叉树是一种特殊的二叉树:查找二叉树,也就是树是排序过的,位于左子树上的结点都比父结点小,而位于右子树的结点都... 阅读全文
posted @ 2011-10-26 22:27 白草黒尖 阅读(457) 评论(0) 推荐(0)
【转帖】数组中出现次数超过一半的数字
摘要:题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。(类似于《编程之美》中的“寻找发帖水王”) 分析:这是一道广为流传的面试题,包括百度、微软和Google在内的多家公司都曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力。 看到这道题,我们马上就会想到,要是这个数组是排序的数组就好了。如果是排序的数组,那么我们只要遍历一次就可以统计出每个数字出现的次数,这样也就能找出符合要求的数字了。题目给出的数组没有说是排好序的,因此我们需要给它排序。排序的时间复杂度是O(nlogn),再加上遍历的时间复杂度O(n),因此. 阅读全文
posted @ 2011-10-26 20:00 白草黒尖 阅读(272) 评论(0) 推荐(0)
【转帖】复杂链表的复制
摘要:转自:http://zhedahht.blog.163.com/blog/static/254111742010819104710337/ 题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL,请完成函数ComplexNode* Clone(ComplexNode* pHead),以复制一个复杂链表。struct ComplexNode{ int m_nValue; ComplexNode* m_pNext; ComplexNode* m_pSibling;}; 下图是一个含有5个结点的该类... 阅读全文
posted @ 2011-10-26 19:38 白草黒尖 阅读(821) 评论(0) 推荐(1)
【转帖】加法(不使用+、-、*、/)
摘要:转自:http://zhedahht.blog.163.com/blog/static/254111742011125100605/ 题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。 分析:5的二进制是101,17的二进制10001。还是试着把计算分成三步:第一步各位相加但不计进位,得到的结果是10100(最后一位两个数都是1,相加的结果是二进制的10。这一步不计进位,因此结果仍然是0);第二步记下进位。在这个例子中只在最后一位相加时产生一个进位,结果是二进制的10;第三步把前两步的结果相加,得到的结果是10110,正好是22。由此可见三步走的策略 阅读全文
posted @ 2011-10-26 15:26 白草黒尖 阅读(335) 评论(0) 推荐(0)
【转帖】字符串的组合
摘要:转自:http://zhedahht.blog.163.com/blog/static/2541117420114172812217/ 题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。 假设想在长度为n的字符串中求m个字符的组合,先从头扫描字符串的第一个字符。针对第一个字符,有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;而是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。这两种选择都很容易用递归实现。下面是这种思路的参考代码:void Co. 阅读全文
posted @ 2011-10-26 10:57 白草黒尖 阅读(264) 评论(0) 推荐(1)
【转帖】字符串的排列
摘要:转帖:http://zhedahht.blog.163.com/blog/static/254111742007499363479/ 题目:输入一个字符串,打印出该字符串中字符的所有排列,如字符串abc,则输出由字符a、b、c所能排列出的所有字符串abc、acb、bac、bca、cab和cba。 分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。 以三个字符abc为例来分析一下求字符串排列的过程。首先我们固定第一个字符a,求后面两个字符bc的排列。当两个字符bc的排列求好之后,我们把第一个字符a和后面的b交换,得到bac,接着我们固定第一个字符b. 阅读全文
posted @ 2011-10-26 10:35 白草黒尖 阅读(267) 评论(0) 推荐(0)
【转帖】判断二叉树是不是平衡的
摘要:转自:http://zhedahht.blog.163.com/blog/static/25411174201142733927831/ 题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 在本系列博客的第27题,我们曾介绍过如何求二叉树的深度。有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度,如果每个结点的左右子树的深度相差都不超过1,按照定义它就是一棵平衡的二叉树。这种思路对应的代码如下: 1 bool Is. 阅读全文
posted @ 2011-10-25 23:34 白草黒尖 阅读(359) 评论(0) 推荐(1)
【转帖】数对之差的最大值
摘要:http://zhedahht.blog.163.com/blog/static/2541117420116135376632/ 题目:在数组中,数字减去它右边的数字得到一个数对之差,求所有数对之差的最大值,如数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。 分析:看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果。这种思路忽略了题目中很重要的一点:数对之差是一个数字减去它右边的数字。由于我们无法保证最大值一定位于数组的左边,因此这个思路不管用。 于是我们接下来可以想到让每一个数字逐个减. 阅读全文
posted @ 2011-10-25 23:04 白草黒尖 阅读(339) 评论(0) 推荐(1)
【转帖】smart pointer
摘要:内存管理是一个比较繁琐的问题,C++中有两个实现方案:垃圾回收机制、智能指针。一个智能指针就是一个C++的对象,这对象的行为像一个指针,但是它却可以在其不需要的时候(不是一个精确的定义,如:局部变量退出函数作用域、类的对象被析构...等)自动删除。注意:(1)声明一个智能指针时要立即给它实例化,且一定不能手动释放它;(2)..._ptr<T>不是T*类型,所以声明时要..._ptr<T>而不是...ptr<T*>,不能把T*型的指针赋值给它,且不能些ptr=NULL,而用ptr.reset()代替;(3)不能循环引用;(4)不要声明临时的shared_ptr 阅读全文
posted @ 2011-10-25 16:34 白草黒尖 阅读(519) 评论(0) 推荐(0)
【转帖】用C实现C++中的多态性
摘要:前言:关于多态,关于 C 多态 (polymorphism) 一词最初来源于希腊语 polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。 然而在人们的直观感觉中,多态的含义大约等同于“同一个方法对于不同类型的输入参数均能做出正确的处理过程,并给出人们所期望获得的结果”,也许这正体现 了人们对于多态性所能达到的效果所寄予的期望:使程序能够做到越来越智能化,越来越易于使用,越来越能够使设计者透过形形色色的表象看到代码所要触及到的 问题本质。 作为读者的你或许对于面向对象编程已有着精深的见解,或许对于多态的方 阅读全文
posted @ 2011-10-24 12:52 白草黒尖 阅读(1548) 评论(0) 推荐(0)
【整理】C宏定义
摘要:1,防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif 2,得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) ) ) #define MEM_W( x ) ( *( (word *) (x) ) ) 3,得到一个field在结构体(struct)中的偏移量 #define FPOS( type, field ) ( (dword) &(( type *) 0)-> field )4,得到一个结构体中field所占用的字节数 #def... 阅读全文
posted @ 2011-10-23 22:15 白草黒尖 阅读(687) 评论(0) 推荐(0)
【转帖】如果有天我不在烦你
摘要:某一天,你拨我的电话号码,语音告诉你我已经停机。答应我不可以难过,不可以失落;不可以想我,更加不要记得有这样一个我。某一天,你的手机不再频繁的响起,请不要等待,不要期盼,更加不要想找到我,只有看到这样的一个你,我才可以放心的离开。 某一天,你的耳边不再有人说烦人,讨厌。不再有人固执的说自己永远是正确的,不再有人粗鲁的对你发脾气。不再有人和你讨价还价的想多讲几分钟电话,不再有人在挂电话之前吵着要你亲亲和抱抱。这样的一个我消失了,你会难过吗? 某一天,你的短信收件箱里,不再有人可怜兮兮的说又梦到你了,不再有人恶狠狠的说再不和我说话我就揍你拉,不再有人撒娇的说想你了,不再有人在做错事情之 ... 阅读全文
posted @ 2011-10-23 00:09 白草黒尖 阅读(274) 评论(0) 推荐(0)
【整理】switch default
摘要:先看看如下的示例代码:package flowcontrol; 1. 2. public class SwitchCase { 3. // first default 4. public static void testFirst(int i) { 5. switch (i) { 6. default: 7. System.out.println("default");// first default 8. case 1: ... 阅读全文
posted @ 2011-10-22 16:00 白草黒尖 阅读(2950) 评论(0) 推荐(0)
【转帖】应届生签约注意事项
摘要:大学毕业生经过了笔试、面试的重重考验,终于拿到了offer,下一步要面临的问题就是:签约。而如果有的同学之前已经跟其它单位签约,现在又想和新单位签约,那么又涉及到一个问题:违约。本篇主要讲讲应届生签约最应该九个注意事项。一般来讲,签约分为两种:签offer和签三方协议。其中,前者对个人及企业的约束效力远不及后者。1、签offeroffer一般是单位提供给你的一个录用意向,以合同的形式提供给你,要求你在上面签字,表明你接受对方的录用意向,愿意到单位工作。所以,这实际上相当于个人和企业签署的一个合同。一般这种形式在外企中比较常见,另外就是那些不给解决户口的单位,通常也会跟你签署一个这样的offe. 阅读全文
posted @ 2011-10-22 12:22 白草黒尖 阅读(494) 评论(0) 推荐(0)
【转帖】0-1背包:纸币组合
摘要:有不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元? 笨办法:暴力枚举~ 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 const int Len = 5; 6 int ans = 0; 7 int m[Len] = {50, 20, 10, 5, 1}; 8 int total[Len] = {2, 5, 10, 20, 100}; 9 int n[Len];10 int sum = 100;11 12 void GetNum(int m[], int n[ 阅读全文
posted @ 2011-10-21 14:44 白草黒尖 阅读(309) 评论(0) 推荐(0)
【整理】CPU使用率
摘要:在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。 操作实例:在命令行中输入 “top”,即可启动 top top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。第一部分 -- 最上部的 系统信息栏 : 第一行(top): “00:11:04”为系统当前时刻;... 阅读全文
posted @ 2011-10-15 21:56 白草黒尖 阅读(398) 评论(0) 推荐(0)
【转帖】字符串通配符
摘要:【前言】 选题仍然是源自课堂习题,是要设计一个含有通配符问号的KMP字符匹配算法。其实这个目标是非常容易达到的。但是,接着想到通配符星号时,就感到有些困难了。因为星号可以匹配的字符个数不是确定的,所以子串中含有星号时要多次扫描母串,每种情况都要逐一比对才行,现有的匹配算法显然达不到这样的目的。现在要设计一种算法,即能完成不含通配符的匹配问题,同时又能适应含通配符的匹配问题。【分析】 通配符共有两种,问号和星号。“?”表示一个任意字符,而“*”则表示任意个任意字符。 首先来想问号的处理,子串扫描到问号时,不管母串是什么字符我们都认为它们是匹配的就行了。就是在匹配条件中加一条,变成s[i]==t[ 阅读全文
posted @ 2011-10-13 10:17 白草黒尖 阅读(2284) 评论(0) 推荐(0)
【整理】查看C++对象内存布局
摘要:在C++中,一个类实例化得到的结果就是一个对象。一个类包含成员变量和成员函数,成员变量分为non-static和static,成员函数分为non-static成员函数、static成员函数以及virtual成员函数。一个对象包含可能存在的vfptr以及它声明的或基类继承而来的non-static成员变量,static成员变量、static成员函数、non-static成员函数以及virtual函数均存在于对象之外。 VC2005中有一个非常重要的编译选项:对于查看类的对象的内存布局,MS在VC2005中(要先进入Microsoft Visual Studio -> Visual Stud 阅读全文
posted @ 2011-10-12 12:54 白草黒尖 阅读(913) 评论(0) 推荐(0)
【整理】dos2unix/unix2dos
摘要:Yet another "feature" from the developers of ubuntu to simplify life, "dos2unix" and "unix2dos" are missing in version 10.04 (Lucid). First of all, install dos2unix package: #sudo aptitude install tofrodos Then if you want "dos2unix" type "fromdos" a 阅读全文
posted @ 2011-10-12 12:50 白草黒尖 阅读(314) 评论(0) 推荐(0)
【转帖】Vim编码
摘要:在Vim中,有四个与编码有关的选项:fileencodings、fileencoding、encoding和termencoding。实际使用中,任何一个选项错误,都会导致乱码。因此, 每一个 Vim 用户都应该明确这四个选项的含义。1. encoding encoding 是 Vim 内部使用的字符编码方式。 设置了 encoding 后, Vim 内所有的 buffer、 寄存器、 脚本中的字符串等, 全都使用这个编码。 Vim 在工作的时候, 如果编码方式与它的内部编码不一致, 它会先把编码转换成内部编码。 如果工作用的编码中含有无法转换为内部编码的字符, 在这些字符就会丢失。 因此,. 阅读全文
posted @ 2011-10-12 12:21 白草黒尖 阅读(405) 评论(0) 推荐(0)
【转载】从C到Perl
摘要:很多人并不是把Perl当做第一门编程语言来学习的,在学Perl之前往往已 经掌握了一两门其它语言。虽然有争议,但是我个人认为Perl确实不适合作为入门语言。这篇文章就是写给那些熟悉C而且又想掌握Perl的程序员,介绍一 些技巧以及如何避免C程序员常犯的错误,带你渡过危险的沼泽。在读这篇文章之前,请先查看perltrap的手册页,里面有很多有用的信息,这里不再重 复。欢迎来到Perl的魔法世界!如果你喜欢C,那你也会爱上Perl。C语言的设计者Dennis Ritche说:“C语言诡异离奇,缺陷重重,却获得了巨大的成功。 ”这大概是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。钟爱C. 阅读全文
posted @ 2011-10-11 18:13 白草黒尖 阅读(893) 评论(0) 推荐(1)
【整理】文本文件 vs 二进制文件
摘要:一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的,这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。 从上面可以看出文本文件基本上是定长编码的,基于字符嘛,每个字符在具体编码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特;而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。 阅读全文
posted @ 2011-10-11 09:54 白草黒尖 阅读(614) 评论(0) 推荐(0)
【整理】Linux I/O调度
摘要:一) I/O调度程序的总结 1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成. 2) 每个块设备都有它自己的队列. 3) I/O调度程序负责维护这些队列的顺序,以更有效地利用介质.I/O调度程序将无序的I/O操作变为有序的I/O操作. 4) 内核必须首先确定队列中一共有多少个请求,然后才开始进行调度.二) I/O调度的4种算法 1) CFQ(Completely Fair Queuing, 完全公平排队) 特点: 在最新的内核版本和发行版中,都选择CFQ做为默认的I/O调度器,对于通用的服务器也是最好的选择. CFQ试图均匀地分布对I/O带宽的访问,避免进程被饿 阅读全文
posted @ 2011-10-09 23:10 白草黒尖 阅读(6467) 评论(0) 推荐(0)
【整理】图片旋转90度
摘要: 阅读全文
posted @ 2011-10-03 22:00 白草黒尖 阅读(249) 评论(0) 推荐(0)