2012年5月28日

在从1到n的正数中1出现的次数

摘要: 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。分析:这是一道广为流传的google面试题。简单的方法就是按照给位进行分析在个位出现1的个数=n/10+(个位=0,0;个位>1,1;个位=1,低0位+1);十位位出现1的个数=n/100*10+(十位=0,0;十位>1,10,;十位=1,低一位+1);百位出现1的个数=n/1000*100+(百位=0,0;百位>1,100;百位=1,低两位+1);等等算法的复杂度仅仅和位数有关算法描述:(1)求出所给正整数a的位数, 阅读全文

posted @ 2012-05-28 15:40 为梦飞翔 阅读(4653) 评论(0) 推荐(0)

栈的push、pop序列

摘要: 题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,这样得到的pop序列就是4、5、3、2、1。但序列4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。基本思路:(1)用两个指针分别指向数组的头部,pPush,pPop;(2) 阅读全文

posted @ 2012-05-28 12:41 为梦飞翔 阅读(1783) 评论(0) 推荐(0)

左旋转字符串

摘要: 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。思路:把字符串看出两个XY(XTYT)T=YXXT为X的旋转操作 1 void inverse(char* start,char* end){ 2 while(start<end){ 3 char temp=*start; 4 *start=*end; 5 *end=*start; 6 start++... 阅读全文

posted @ 2012-05-28 10:15 为梦飞翔 阅读(277) 评论(0) 推荐(0)

导航