《编程之美——微软技术面试心得》收集了约60道算法和程序设计题目,这些题目大部分在近年的笔试,面试中出现过,或者是被微软员工热烈讨论过。作者试图从书中各种有趣的问题出发,引导读者发现问题,分析问题,解决问题,寻找更优的解法。
1、 求10进制数中1的数目
采用求模运算%和除法运算/,得到每个位数上1的个数
2、 判断两个单向链表是否有环
将第二个链表的尾部接到第一个链表的头部,然后判断该链表是否有环。
判断单链表是否有环:取两个头指针,步进分别为1和2;如果两者可以相等,则有环,否则无环。
3、 判断阶乘N!末尾有多少个0
将N!质因素分解为2X*3Y*5Z*…,则2*5=10,末尾0的个数取决于X和Z,而2比5多,则末尾0的个数等于Z。具体的算法:遍历1到N,通过取模运算%和除法运算/判断每个数中含有5的个数。
4、 求8位二进制数中1的个数
有如下三种方法:(1)采用求模运算%和除法运算/;(2)采用移位运算;(3)采用256位数组,用空间换时间。