之前從來沒練過這種題。。。

嚴(yán)重超時(shí)。。。。

我特別喜歡這個(gè)方法,比較全面的展示了對Binary的理解??梢园l(fā)現(xiàn),如果我們在數(shù)字前加上0x 數(shù)字就會自動(dòng)認(rèn)為是hexidecimal.?
不斷往右邊shift。 n= n>>1. 跟最優(yōu)解的原理是一樣的,n只能有一個(gè)1 如果是power of 2.所以最后ones必須只能為1.

最優(yōu)解:

Power of 3:

這題感覺只能用最暴力的loop,而且還沒有Binary 可以用。這邊的Run time 分析是一個(gè)重點(diǎn),logn的原因是因?yàn)槲覀冊谇髇能夠被3整除幾次。
還有這個(gè)條件設(shè)置的太厲害。比如說4 % 3 會等于1,那就不進(jìn)loop了,直接return 4==1 =false.
我之前一直在想如果用/的話,比如4/3 就會變成1,再/3就變成0了。。但是他這個(gè)case把這些都cover了

【這個(gè)solution有一點(diǎn)問題】主要是i有可能為小數(shù)。

Power of 4:

這里我用了power of 3的方法

因?yàn)閜ower of 4還是只能有一個(gè)1,所有我們判斷一下bitCount是不是=1.
還有一個(gè)比較tricky的地方就是要判斷1后面跟著的0有幾個(gè)。
比如100=4, 0的數(shù)量%2=0
10000 0的數(shù)量%2=0
