1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! Power of Two [power_of_two](https://leetcode.com/problems/power-of-two/)
//!
//! Given an integer, write a function to determine if it is a power of two.
//!
//! ***Example1:***
//!
//! ```
//! Input: 1
//! Output: true
//! Explanation: 20 = 1
//! ```
//!
//! ***Example2:***
//!
//! ```
//! Input: 16
//! Output: true
//! Explanation: 24 = 16
//! ```
//!
//! ***Example3:***
//!
//! ```
//! Input: 218
//! Output: false
//! ```

/// # Solutions
///
/// # Approach 1: Bit Manipulation Trick
///
/// * Time complexity: O(1)
///
/// * Space complexity: O(1)
///
/// * Runtime: 0 ms
/// * Memory: 2.4 MB
///
/// ```rust
/// impl Solution {
///     pub fn is_power_of_two(n: i32) -> bool {
///         if n > 0 && (n & (n - 1) == 0) { true } else { false }
///     }
/// }
/// ```
///
pub fn is_power_of_two(n: i32) -> bool {
    if n > 0 && (n & (n - 1) == 0) { true } else { false }
}