Power of 2&3&4

之前从来没练过这种题。。。

Power of 2&3&4_第1张图片

严重超时。。。。

Power of 2&3&4_第2张图片

我特别喜欢这个方法,比较全面的展示了对Binary的理解。可以发现,如果我们在数字前加上0x 数字就会自动认为是hexidecimal. 

不断往右边shift。 n= n>>1. 跟最优解的原理是一样的,n只能有一个1 如果是power of 2.所以最后ones必须只能为1.


Power of 2&3&4_第3张图片


最优解:

Power of 2&3&4_第4张图片



Power of 3:


Power of 2&3&4_第5张图片


这题感觉只能用最暴力的loop,而且还没有Binary 可以用。这边的Run time 分析是一个重点,logn的原因是因为我们在求n能够被3整除几次。

还有这个条件设置的太厉害。比如说4 % 3 会等于1,那就不进loop了,直接return 4==1 =false.

我之前一直在想如果用/的话,比如4/3 就会变成1,再/3就变成0了。。但是他这个case把这些都cover了


Power of 2&3&4_第6张图片

【这个solution有一点问题】主要是i有可能为小数。

Power of 2&3&4_第7张图片

Power of 4:


Power of 2&3&4_第8张图片

这里我用了power of 3的方法

Power of 2&3&4_第9张图片

因为power of 4还是只能有一个1,所有我们判断一下bitCount是不是=1.

还有一个比较tricky的地方就是要判断1后面跟着的0有几个。

比如100=4, 0的数量%2=0

10000 0的数量%2=0

你可能感兴趣的:(Power of 2&3&4)