# 231. Power of Two

## problem description

Given an integer, write a function to determine if it is a power of two.

**Example 1:**

```
Input: 1
Output: true 
Explanation: 2^0 = 1
```

**Example 2:**

```
Input: 16
Output: true
Explanation: 2^4 = 16
```

**Example 3:**

```
Input: 218
Output: false
```

## algorithm thought

这里有种解法是一直除二，但是还可以利用LeetCode的漏洞。

LeetCode检测一个题的答案是一直调用这个函数，如果再函数里声明一个static变量，那么，就只会初始化一次。之后直接返回即可。用在这题最好不过

## code

```cpp
class Solution {
public:
    bool isPowerOfTwo(int n) {
        static unordered_set<int> se{1<<0,1<<1,1<<2,1<<3,1<<4,1<<5,1<<6,1<<7,1<<8,1<<9,
                                     1<<10,1<<11,1<<12,1<<13,1<<14,1<<15,1<<16,1<<17,1<<18,1<<19,
                                     1<<20,1<<21,1<<22,1<<23,1<<24,1<<25,1<<26,1<<27,1<<28,1<<29,
                                     1<<30};
        return se.count(n);
    }
};
```

## algorithm analysis

不难看出，这里时间和空间都是复杂度O(1)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kongchengzhuge.gitbook.io/leetcode/231.-power-of-two.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
