一道算法和一些(我认为有趣的)开源项目
这周的内容有点水,简单分享下这周学到的东西。
算法
LC 342 - Power of 4 without loop/recursion
这个题目有点意思。抛开 1(0x0000 0001)
这个例外,像 4(0x0000 0100)
、16(0x0001 0000)
、64(0x0100 0000)
可以观察到二进制形式下很有规律,只有一位是 1
,接下来跟着偶数个 0
(否则就是 2 的幂)。代码参考自 https://www.geeksforgeeks.org/find-whether-a-given-number-is-a-power-of-4-or-not/
a) There is only one bit set in the binary representation of n (or n is a power of 2)
b) The bits don’t AND(&) any part of the pattern 0xAAAAAAAA
/**
* @param {number} num
* @return {boolean}
*/
var isPowerOfFour = function(num) {
return (num != 0) && ((num&(num-1)) == 0) && !(num & 0xAAAAAAAA);
};