
编程之美
qingen123
生命不息 奋斗不止 LINUX爱好者 世界因你的敲打而改变
展开
-
尺子最多覆盖多少点
按升序给定数轴上的n个点,给定一把长度为k的尺子,问尺子最多能覆盖几个点?比如{1,3,7,8,9,11},用一把长度为4的尺子,从1开始量只能覆盖1和3两个点,覆盖不到7。从3开始量,能覆盖到3和7两个点。从7开始量可以覆盖四个点,所以答案为4分析:可以从后面开始,依次减去前面相邻的,差值与给出的尺子长度比较,然后记录覆盖的点数,这样依次遍历完就找出最多的点数了代码如下://原创 2013-10-06 22:25:52 · 1154 阅读 · 0 评论 -
最大连续乘积
.给一个浮点数序列,求最大乘积连续子串的值。例如:{-2.5, 4, 0, 3, 0.5, 8, -1},则取出的最大乘积连续子串为{3, 0.5, 8}。也就是说,上述数组中,{3, 0.5, 8}这3个数的乘积3*0.5*8=12是最大的,而且是连续的。分析:类型最大连续字数组之和。其中一个非常经典的解法是设置一个临时变量取得连续的数组之和,如果小于等于0,则直接替换为下一个数组的元素,我原创 2013-10-07 10:38:52 · 1315 阅读 · 1 评论 -
字符串的最长回文子串
有一个字符串,要求其最长回文子串,如”QINGENENG”的最大回文子串为“NEN”分析:可以依次遍历,然后判断左右是否形同,知道不同为止,记下长度与相应下标,遍历到末尾结束,即可找出代码如下:// [10/3/2013 qingezha] 真没想到可以从中间向两边出发,分别比较2边是否相同,注意回文个数是偶数/奇数情况int getpalindrome(char *arr,i原创 2013-10-06 19:32:22 · 879 阅读 · 0 评论 -
求出1…n之间的所有亲和数
所谓亲和数,即存在数a和数b,a的所有真因子之和等于b,b的所有真因子之和等于a,则称a和b为一对亲和数。例如220的真因子为:1、2、4、5、10、11、20、22、44、55、110,和为284;而284的真因子为:1、2、4、71、142,和正好为220。故220和284是一对亲和数。分析:一眼看去很难,似乎需要将所有(1-n)的数的因子求出,然后相加求和,组后比较值与真因子是否形同原创 2013-10-07 17:18:13 · 2992 阅读 · 0 评论 -
找出数组中第二大的数
给你一个数组,求出其中第二大的数;比如数组a={1,2,3,4,5,6,7,8,9},其中第二大的数为8,返回8即可;分析:一般情况下都是求最大值,呵呵,这道题很有趣。想想也不难,可以在扫描最大值的同时,求出第二大的值,就是比当前最大值大的数赋给最大值,然后用第二大的值与先前的最大值比较,如果小,则用先前的值覆盖第二大的值,哈哈,原理就这么简单;、代码如下:// [7/1/201原创 2013-10-07 17:39:38 · 2525 阅读 · 0 评论 -
仅用2个栈,将其中一个有序栈反转过来
A栈存放数据有序,假设栈顶是最小元素,B栈是一个空栈,现在不使用其他数据结构,可以开辟常量空间,将A栈中的数据反转过来;(乐元素笔试)分析:其实就是不断的将数据从A中倒到B中,然后从B中倒到A中;首先将A的顶元素压入B,然后弹出A中的顶元素到一个临时变量,后将B中的所以元素弹出压入A,其次将临时变量压入B,然后将刚刚压入A中的元素压入B,这样对A的所有元素这样操作,知道A空,最后将B中的元素全原创 2013-11-11 21:22:46 · 1554 阅读 · 0 评论