1346. Check If N and Its Double Exist #
题目 #
- 给你一个整数数组
arr
,请你检查是否存在两个整数N
和M
,满足N
是M
的两倍(即,N = 2 * M
)。 - 更正式地,检查是否存在两个下标
i
和j
满足:i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]
思路 #
哈希 #
代码 #
哈希 #
class Solution {
public boolean checkIfExist(int[] arr) {
Set<Integer> set = new HashSet<>();
for (int num: arr) {
if (set.contains(2 * num)) return true;
if (num % 2 == 0 && set.contains(num / 2)) return true;
set.add(num);
}
return false;
}
}