##### Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/1346.html

# 1346. Check If N and Its Double Exist (Easy)

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]

Example 1:

Input: arr = [10,2,5,3]
Output: true
Explanation: N = 10 is the double of M = 5,that is, 10 = 2 * 5.


Example 2:

Input: arr = [7,1,14,11]
Output: true
Explanation: N = 14 is the double of M = 7,that is, 14 = 2 * 7.


Example 3:

Input: arr = [3,1,7,11]
Output: false
Explanation: In this case does not exist N and M, such that N = 2 * M.


Constraints:

• 2 <= arr.length <= 500
• -10^3 <= arr[i] <= 10^3

Related Topics:
Array

## Solution 1.

• class Solution {
public boolean checkIfExist(int[] arr) {
Set<Integer> set = new HashSet<Integer>();
for (int num : arr) {
if (num != 0)
else {
return true;
}
}
for (int num : arr) {
if (num != 0 && set.contains(num * 2))
return true;
}
return false;
}
}

############

class Solution {
public boolean checkIfExist(int[] arr) {
Map<Integer, Integer> m = new HashMap<>();
int n = arr.length;
for (int i = 0; i < n; ++i) {
m.put(arr[i], i);
}
for (int i = 0; i < n; ++i) {
if (m.containsKey(arr[i] << 1) && m.get(arr[i] << 1) != i) {
return true;
}
}
return false;
}
}

• // OJ: https://leetcode.com/problems/check-if-n-and-its-double-exist/
// Time: O(N)
// Space: O(N)
class Solution {
public:
bool checkIfExist(vector<int>& arr) {
unordered_set<int> s;
for (int n : arr) {
if (s.count(2 * n) || (n % 2 == 0 && s.count(n / 2))) return true;
s.insert(n);
}
return false;
}
};

• class Solution:
def checkIfExist(self, arr: List[int]) -> bool:
m = {v: i for i, v in enumerate(arr)}
return any(v << 1 in m and m[v << 1] != i for i, v in enumerate(arr))


• func checkIfExist(arr []int) bool {
m := make(map[int]int)
for i, v := range arr {
m[v] = i
}
for i, v := range arr {
if j, ok := m[v*2]; ok && j != i {
return true
}
}
return false
}

• function checkIfExist(arr: number[]): boolean {
const s = new Set();
for (const v of arr) {
if (s.has(v << 1) || s.has(v / 2)) {
return true;
}
}
return false;
}


• /**
* @param {number[]} arr
* @return {boolean}
*/
var checkIfExist = function (arr) {
const s = new Set();
for (const v of arr) {
if (s.has(v << 1) || s.has(v / 2)) {
return true;
}
}
return false;
};


• use std::cmp::Ordering;
impl Solution {
pub fn check_if_exist(mut arr: Vec<i32>) -> bool {
arr.sort();
let n = arr.len();
for i in 0..n {
let target = arr[i] * 2;
let mut left = 0;
let mut right = n;
while left < right {
let mid = left + (right - left) / 2;
match arr[mid].cmp(&target) {
Ordering::Less => left = mid + 1,
Ordering::Greater => right = mid,
Ordering::Equal => {
if mid == i {
break;
}
return true;
}
}
}
}
false
}
}

• class Solution {
/**
* @param Integer[] $arr * @return Boolean */ function checkIfExist($arr) {
for ($i = 0;$i < count($arr);$i++) {
$hashtable[$arr[$i] * 2] =$i;
}
for ($i = 0;$i < count($arr);$i++) {
if (isset($hashtable[$arr[$i]]) &&$hashtable[$arr[$i]] != \$i) return true;
}
return false;
}
}