1346. Check if N and Its Double Exist

1346. Check If N and Its Double Exist #

题目 #

  • 给你一个整数数组 arr,请你检查是否存在两个整数 NM,满足 NM 的两倍(即,N = 2 * M)。
  • 更正式地,检查是否存在两个下标 ij 满足:
    • 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;
    }
}

致谢 #