> For the complete documentation index, see [llms.txt](https://hao-fu-1.gitbook.io/oj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hao-fu-1.gitbook.io/oj/hash/jian-guo/1346.-check-if-n-and-its-double-exist.md).

# 1346. Check If N and Its Double Exist

https\://leetcode.com/problems/check-if-n-and-its-double-exist/

Given an array `arr` of integers, check if there exists two integers `N` and `M` such that `N` is the double of `M` ( i.e. `N = 2 * M`).

More formally check if there exists two indices `i` and `j` such that :

* `i != j`
* `0 <= i, j < arr.length`
* `arr[i] == 2 * arr[j]`

数组中是否存在某元素是另一个元素的二倍。遍历，hash set记录已经出现过的元素，检查set里是否有当前元素两倍或1/2的元素（且能整除）。

```cpp
class Solution {
public:
    bool checkIfExist(vector<int>& arr) {
        unordered_set<int> s;
        for (const auto a : arr) {
            if (s.count(a * 2) || a % 2 == 0 && s.count(a / 2)) return true; 
            s.insert(a);
        }
        return false;
    }
};
```
