2024年5月31日 星期五

[231] Power of Two

這什麼!!!算bit數竟然不行嗎 XD 只差兩筆測資!!!負數為什麼還要特別處理!!!太麻煩了吧!!!!!!(怒吼)

那只好偷吃步了(燦笑)反正負數都是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;
}

沒有留言:

張貼留言