aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-08-15 08:33:19 +0200
committerJack Sangdahl <[email protected]>2025-08-15 08:33:19 +0200
commitf035e4f04939219d5979f67d9e36b307a60d15fb (patch)
treeedeb5fee7f6c229ee0b84c3cf1f7741ec6841f9e
parent3ae87fe80a3a60df750acefceff38c4ab09a9a30 (diff)
downloadleetcode-f035e4f04939219d5979f67d9e36b307a60d15fb.tar.gz
leetcode-f035e4f04939219d5979f67d9e36b307a60d15fb.zip
342. power of four
-rw-r--r--power_of_four.c14
-rw-r--r--power_of_four.py2
2 files changed, 3 insertions, 13 deletions
diff --git a/power_of_four.c b/power_of_four.c
index 7ab3cae..47f88fe 100644
--- a/power_of_four.c
+++ b/power_of_four.c
@@ -1,6 +1,5 @@
// 342. Power of Four
-#include <stdbool.h>
-#include <stdio.h>
+#include "leetcode.h"
/*
* given an integer 'n', return 'true' if it is a power of four, otherwise,
@@ -9,16 +8,7 @@
*/
bool isPowerOfFour(int n) {
- int ans = 0, pos = 1, ones = 0;
- while (n) {
- if (n & 1) { // if 'n' is even...
- ans++;
- ones = pos;
- }
- n >>= 1; // 'n' / 2
- pos++;
- }
- return ans == 1 && ones & 1;
+ return n > 0 && __builtin_popcount((unsigned)n) == 1 && !((n - 1) % 3);
}
int main() {
diff --git a/power_of_four.py b/power_of_four.py
index 13a0dc5..da9ab09 100644
--- a/power_of_four.py
+++ b/power_of_four.py
@@ -9,7 +9,7 @@ return 'false'. an integer 'n' is a power of four if there exists an integer
class Solution(object):
def isPowerOfFour(self, n):
- return n != 0 and n & (n - 1) == 0 and n & 1431655765 == n
+ return n > 0 and n.bit_count() == 1 and (n - 1) % 3 == 0
if __name__ == "__main__":