看大神文章小结——微软等面试 18,19
来源:互联网 发布:qt网络编程传送字符串 编辑:程序博客网 时间:2024/06/16 10:50
大神 地址 :http://blog.csdn.net/v_JULY_v/article/details/6015165
第 18 题(数组):
题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,
每次从这个圆圈中删除第 m 个数字(第一个为当前数字本身,第二个为当前数字的下一个
数字)。当一个数字删除后,从被删除数字的下一个继续删除第 m 个数字。
求出在这个圆圈中剩下的最后一个数字。
July:我想,这个题目,不少人已经见识过了
没有见识过。。。。。孤陋顾问了。 看到这个题目 我第一个反应是 用链表 不停的 做下去 肯定能得到的啊。。估计这个方法太笨重了? 还是按照我的想法来做一边吧。 其实 取余 就有点是 环链表的 感觉了。
public static void main(String[] args) {int[] data={1,2,3,4,5,6,7,8,9,10};int index =0;int count =3;int countIndex=0;int findCount=0;while(findCount<data.length-1){//h还没有全部找出来 就做循环index=index%data.length;if(data[index]!=0){countIndex++;}if(countIndex==count){countIndex=0;findCount++;System.out.println("qudiao:"+data[index]);data[index]=0;}index++;}for(int i=0;i<data.length;i++){if(data[i]!=0){System.out.println("/////"+i);System.out.println("/////"+data[i]);}}}
第19题:
题目:定义 Fibonacci 数列如下:
/ 0 n=0
f(n)= 1 n=1,2
\ f(n-1)+f(n-2) n>2
输入 n,用最快的方法求该数列的第 n 项。
分析:在很多 C 语言教科书中讲到递归函数的时候,都会用 Fibonacci 作为例子。
因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。 。
//0 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597..........
//注意,当求第100项,甚至更大的项时,请确保你用什么类型,长整型?or long long int
存储。
//不然,计算机,将 得不到结果
题目实现不难 难在 最快 2个字。 大家都会想到递归。 可是递归的速度 以及需要 栈 空间需求也大。 对于大数据 压根不行。估计不可以那么些 递归的写法就不写了 很简单 考虑其他的思路 有点想不到 看了下提示。。
就是 从前 往后算 不用递归。我试试2种 效率区别。
试了一下 n到 40以上 差别 巨大。。
代码如下
public long recursive(int n){if(n<=0){return 0;}else if(n<=2){return 1;}//System.out.println(n);return recursive(n-1)+recursive(n-2);}public long notRecursive(int n){int index=3;//就从第三个数开始算。 前面是1,1 没必要纠结了。 long pre=1;//第而个数是1long prepre=1;//第一个数是1long total=0;while(index<=n){total=pre+prepre;long tem=pre;prepre=pre;pre=total;index++;}return total;}
说明递归 的确坑爹。 上次我有个玩递归的地方 记得 不是很大 一直内存溢出。 以后 注意 尽量不要递归。 这个例子 如果到100 都不知道要多久才能算出来。至于说的 logN的 复杂度的算法 我是想不出来。。。
- 看大神文章小结——微软等面试 18,19
- 看大神文章小结——微软等面试7,8
- 看大神文章小结——微软等面试10,11
- 看大神文章小结——微软等面试12,13,14
- 看大神文章小结——微软等面试 16,17
- 看大神文章小结——微软等面试 20,21
- 看大神文章小结——微软等面试 23,24,25,26
- 看大神文章小结——微软等面试 27,28,29,30
- 看大神文章小结——微软等面试 31,32,33,34
- 看大神文章小结——微软等面试 35,36,37,38
- 看大神文章小结——微软等面试 39,40
- 看大神文章小结——微软等面试 41-45
- 看大神文章小结——微软面试1
- 看大神文章小结——微软面试2
- 看大神文章小结——微软面试3
- 看大神文章小结——微软面试4
- 看大神文章小结——微软面试5,6
- 关于精选微软等公司数据结构+算法面试100题的文章
- App列表之分组ListView
- 从merger方法看hibernate对象生命周期的三个状态
- Android中由文件名获取文件Id的两种方法
- Training 二分\三分
- 初始化 html css
- 看大神文章小结——微软等面试 18,19
- qt 容器
- 在状态栏上显示鼠标当前位置
- 【转载】GuanDan v2.01 发布
- db2数据库导入文件
- ALTER TABLE... defaul 0 (已有的默认为null)
- ubuntu 解压 压缩
- iostream.h和iostream 区别
- android:installLocation简析