学习心得(4)

A

本周的算法题,给定一个num,求0~num所有数二进制表示后,各数字中'1'的个数。


题影

可以直接暴力求解,但是题目是有附加要求的
follow up

我给出如下解法
代码
这里的k指的是二进制最高位'1'转化为十进制后的结果,也就是2的正整数幂,如2,4,8...

2的正整数幂转化为二进制只有最高位是1,其余位都是0,如4是100;那么相对于0而言,只需要加上1即可。如(4-4)=0,对于二进制的4中1的个数只需在0的基础上+1即可;对于5,则有(5-4)=1,即在4也就是100(2)的基础上加上1用二进制表示后其中'1'的个数;再如,(7-4)=3,则在100(2)的基础上加上3用二进制表示后其中'1'的个数,而3已经在先前根据(3-2)算过了。
这种算法很像“剥虾子”,就是先“掐头”,在处理后面的。已知最高位必为1,将其转化为十进制减去,剪出来的差必定是一个较小的我们先前处理过的数字,它的二进制其中有多少'1'我们是知道的,在加上我们掐掉的'1'就行了。

结果很不错
成绩

R

本周看的文章是有关虚拟现实的,但并不是传统的Virtual Reality,说的是科学家开发出一种超轻手套 ,每根手指重量不到8克 。它能使用户能够感受和操纵虚拟物体。其系统提供非常逼真的触觉反馈,并且可以使用电池运行,从而实现极高的移动自由度。这项技术正如电影《玩家一号》里的情节一样,穿上特定的服饰就能“真实地”体验虚拟世界,打破虚拟与真实的界限。
Ultra-light gloves let users 'touch' virtual objects

T

1.C++若要return多个值需使用指针或者引用
2.C++继承与派生中父类的private只能在父类函数中使用,子类无法访问修改

S

继续了解HashTable,更进一步地阅读了相关文献,了解了DHT的其他几种算法。这里有比较完整的chord算法

你可能感兴趣的:(学习心得(4))