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) set.add(num); else { if (!set.add(num)) 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; } s.add(v); } 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; } s.add(v); } 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; } }