diff --git a/maths/power_of_two.py b/maths/power_of_two.py new file mode 100644 index 000000000000..bcd31a77143b --- /dev/null +++ b/maths/power_of_two.py @@ -0,0 +1,31 @@ +""" +Check if an integer is a power of two. + +Time Complexity: O(1) +Space Complexity: O(1) +""" + + +def is_power_of_two(n: int) -> bool: + """Return True if n is a power of two (n > 0). + + >>> is_power_of_two(1) + True + >>> is_power_of_two(2) + True + >>> is_power_of_two(3) + False + >>> is_power_of_two(0) + False + >>> is_power_of_two(-4) + False + """ + if not isinstance(n, int): + raise TypeError("n must be an integer") + return n > 0 and (n & (n - 1)) == 0 + + +if __name__ == "__main__": + import doctest + + doctest.testmod()