白菜刷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