白菜刷LeetCode记-191. Number of 1 Bits

今天的题目如下:

 

这道题目一开始想到的是通过整数除以2,如果余数为1的话,就增加 ‘1’ 的数目。代码如下:

 1 /**
 2  * @param {number} n - a positive integer
 3  * @return {number}
 4  */
 5 var hammingWeight = function(n) {
 6     let res = 0;
 7     while(n !== 0){
 8         if( n % 2 == 1){
 9             res++;
10         }
11         n = parseInt(n/2);
12     }
13     
14     return res;
15 };

 

当然也有更加巧妙的方法,原理如截图:

 

代码如下:

 1 /**
 2  * @param {number} n - a positive integer
 3  * @return {number}
 4  */
 5 var hammingWeight = function(n) {
 6     let res = 0;
 7     while(n !== 0){
 8         res ++;
 9         n &= (n-1)
10     }
11     
12     return res;
13 };

 

END

posted @ 2018-10-09 09:03  sysu_kww  阅读(62)  评论(0编辑  收藏  举报