那只好偷吃步了(燦笑)反正負數都是false, 你們就先return 吧 XD
bool isPowerOfTwo(int n) {
if (n <0 )
return false;
int count = 0;
for (int i=0; i<32; i++)
{
if (count >1)
return false;
if ( n& 0x1 ==1)
count ++;
n = n>>1;
}
return (count ==1 )? true: false;
}
然後這次才仔細看了一個神秘的小解法(?)
原來是這樣啊~(撫鬚)(哪樣!)
然後這種, 0 也要歸在先return false 的地方 XD
倒是,這個寫法在測資很多的時候,速度沒有上一個:算你是不是只有一個bit = 1 來的快!
是因為上一種再怎麼算就是跑32次嗎?
bool isPowerOfTwo(int n) {
if (n <= 0 )
return false;
return ((n & (n-1))==0);
}
這讓我有了新的idea XDDDD 第一種寫法,反正小於0就 break 去return ! 也很棒 !!!
bool isPowerOfTwo(int n) {
int count = 0;
for (int i=0; i<32; i++)
{
if(n<0)
break;
if (count >1)
return false;
if ( n& 0x1 ==1)
count ++;
n = n>>1;
}
return (count ==1 )? true: false;
}
沒有留言:
張貼留言