面试书上一些题目的整理:O(n)复杂度排序年龄 & 青蛙跳台阶

可以按照年龄的个数,设置99个桶,然后桶内处理。

 

青蛙跳台阶,每次1阶或者2阶,就是fib数

如果每次1到n阶,那么归纳法可得,是2^(n-1)

 

另外1*2 覆盖 2*n个矩阵的问题,仍然是Fib数。

 

求出一个数字里面有多少个1。一般的方法是用1来移位并且比较。但是也有巧妙的方法是,每次-1然后跟原来的数字&,能够消去一个1.

这种方法,很多题目都可以用。

 

有两个数,要改变多少位,可以让两个数字一样。

解法:先求出异或,然后统计这个异或结果里面的1就可以了。

 

 

浮点数比较

用"=="来比较两个double应该相等的类型,返回真值完全是不确定的。计算机对浮点数的进行计算的原理是只保证必要精度内正确即可。

 

求power,一般是这样:

要判断指数是不是负数,底数是不是0

然后指数偶数,就两两想乘;奇数,就两两想乘,再乘一个。

a^x = a^x/2 * a^x/2 (* a)

 

合并两个有序链表。这个可以用递归的去做,也可以迭代的去做。

 

看到第151页。

 

posted @ 2017-02-19 19:02  blcblc  阅读(276)  评论(0编辑  收藏  举报