- 博客(12)
- 资源 (5)
- 收藏
- 关注
原创 字符串原地压缩
题目描述:“eeeeeaaaff" 压缩为 "e5a3f2",请编程实现。 void compress(char *s){ char *p = s, *q = s; char t; while(*p) { t = *p; *q++ = t; int nCnt = 1; while(*p && *(++p)==t) nCnt++; if(nC
2011-04-04 15:59:00 812
原创 打印有重复数字的数列的 一个递归解法
<br />全新整理:微软、谷歌、百度等公司经典面试100题<br /> <br />40、用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列,<br />如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连.<br /> <br />int nCnt = 0;<br />void PrintIA(int * r)<br />{<br /> if(r[3]==4) return;<br /> int j = 0;<br /> while(r[j]!=3
2011-04-04 13:11:00 784
原创 蚂蚁都离开木杆 的一个解法
<br />全新整理:微软、谷歌、百度等公司经典面试100题<br />26、有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。<br />木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。<br />当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。<br />编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。<br /> <br />enum ORI<br />{
2011-04-03 16:32:00 1178
原创 大于K的最小正整数 的一种解法
全新整理:微软、谷歌、百度等公司经典面试100题23、Google2009华南地区笔试题给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。 比如,A=[1,0] K=21 那么输出结构应该为100。int findmorethan(int *p, int n, int k){ int i = 0; while(i if(p[i++]>k) return p[--i]; return -1;}int
2011-04-03 15:35:00 1407
原创 打印N*N旋转矩阵 的一个解法
<br />如 输入 4 <br />打印<br />1 2 3 4<br />12 13 14 5<br />11 16 15 6<br />10 9 8 7<br /> <br /> <br />void printNN(int N)<br />{<br /> if(N <= 0) return;<br /> if(N == 1) return;<br /> int *p = new int[N*N];<br /> int i = 0, j = 0;<br /> in
2011-04-03 13:33:00 1309
原创 将字符串中的字符'*'移到串的前部分 的一个解法
微软等数据结构+算法面试100题 第88题2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)int movStar(char * p, int n){ char * q1 = p+(n-1), *q2 = p+(n-1); while(q1>=p) {
2011-04-01 20:00:00 2932 1
原创 数组中超过出现次数超过一半的数字 的一个解法
<br />微软等数据结构+算法面试100题 第74题<br /><br /><br /> <br />题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。<br />分析:这是一道广为流传的面试题,包括百度、微软和Google在内的多家公司都<br />曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,<br />除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力。<br /> <br />struct node<br />{<br /> int nCnt;<br /> i
2011-03-31 23:21:00 950
原创 对称字符串的最大长度的一个解法
<br />微软等数据结构+算法面试100题 中第73题<br />对策字符串的最大长度。<br />题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。<br />比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。<br />分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。<br /> <br />int MaxSymmetricStr(char * str)<br />{<br /> int nLen = str
2011-03-31 23:06:00 1019
原创 二叉树两个结点的最低共同父结点
<br />100题第75题<br />题目:二叉树的结点定义如下:<br />struct TreeNode<br />{<br /> int m_nvalue;<br /> TreeNode* m_pLeft;<br /> TreeNode* m_pRight;<br />};<br />输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。<br />分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至少有两个变种<br /> <br />struct T
2011-03-31 13:18:00 888
原创 输出1到最大的N位数 的迭代解法
微软等100题 的第65题void printN(int n){ if(n int *p = new int[n]; memset(p, 0, sizeof(int)*n); p[n-1] = 1; int m = n-1; while(m>=0) { m = n-1; bool bp = false; for(int i=0;i { if(p[i]>0) bp = true; if(bp) { printf("%d", p[i]); } } p[m]++; print
2011-03-30 20:14:00 1059
原创 字符串的排列 的迭代解法
<br />微软等数据结构+算法面试100题 中第53题<br /> <br />53.字符串的排列。<br />题目:输入一个字符串,打印出该字符串中字符的所有排列。<br />例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串<br />abc、acb、bac、bca、cab和cba。<br />分析:这是一道很好的考查对递归理解的编程题,<br />因此在过去一年中频繁出现在各大公司的面试、笔试题中。<br /> <br />分析:这是一道很好的考查对递归理解的编程题,<br />因
2011-03-27 16:53:00 764
原创 面试题 在从1到n的正数中1出现的次数 的一个解题思路
<br />题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。<br />例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。<br />分析:这是一道广为流传的google面试题。<br /> <br />我们每次判断整数的个位数字是不是1。如果这个数字大于10,除以10之后再判断个位数字是不是1。<br />基于这个思路,不难写出如下的代码:*/<br />int NumberOf1(unsigned int n);<br />int Numbe
2011-03-25 14:32:00 849
程序员面试攻略 绝对第2版 绝对中文.part1
2011-03-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人