切換
舊版
前往
大廳
主題

LeetCode - 342. Power of Four 解題心得

Not In My Back Yard | 2020-10-03 00:01:13 | 巴幣 0 | 人氣 171

題目連結:


題目意譯:
給定一整數 num (32 位元有號整數),撰寫一個函式去判斷該數是否為 4 的冪次。

進階:你可以在不使用任何迴圈、遞迴結構下做出來嗎?



範例測資:
範例 1:
輸入: 16
輸出: true

範例 2:
輸入: 5
輸出: false


解題思維:
因為如果一數是 4 的冪次則它一定是 2 的冪次。因此我們可以先用這題的作法將 num 篩選出來,因為如果 num 連 2 的冪次都不是那一定不是 4 的冪次。

接著因為 4 的冪次就像 2 的冪次一樣,其二進位表示法中只會有一個「1」。而 4 的冪次又更特別一點,它只會在偶數的位元上(如果將最右邊的位元當作第 0 個位元,往左編號)。

因此我們可以利用位元遮罩(Bit Mask)並搭配上面的判斷式,將判斷寫為:
(num > 0) && (num & (num - 1) == 0) && (num & 0x55555555) > 0




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作